2017-12-30 28 views
1

을 사용하여 POST 요청을 통해 MongoDB를에 여러 문서/레코드를 삽입하기 위해 노력하고, 나는 POST 요청을 수행하는 코드 블록을 다음 있습니다 :나는 현재 MongoDB를하고 NodeJS를 사용하여 API를 구축하고 NodeJS

// '/v1/restaurant/add' - Create 
    api.post('/add', (req, res) => { 
    let newRestaurant = new Restaurant(); 
    newRestaurant.name = req.body.name; 

    newRestaurant.save(err => { 
     if (err) { 
     res.send(err); 
     } 
     res.json({ message: 'Restaurant saved successfully' }); 
    }); 
    }); 

을 내가하고 싶은 일괄 POST (예 : 여러 문서/레코드를 한 번에 내 MongoDB에 삽입). 이 작업을 수행하기 위해 코드를 어떻게 수정합니까?

죄송하지만 JavaScript/NodeJS에 대한 새로운 기능입니다.

답변

2

몽구스를 사용하여 수행하는 방법은 두 가지가 있습니다.

  1. Model.create()는 - 그것은 객체의 배열이 데이터베이스에 삽입 받아 항목의 수를 삽입 할 같이 데이터베이스에 많은 쿼리를 수행합니다. 많은 레코드를 삽입하려는 경우 성능에 영향을 미치지 만 각 레코드에 대해 save() 메서드를 호출하는 Mongoose를 사용하면 prepost 미들웨어 함수가 트리거됩니다. 방법 here에 대한 자세한 내용을 볼 수 있습니다.

  2. Model.insertMany() - 삽입 할 객체의 배열도 허용하지만 단일 데이터베이스 작업에서는이 작업을 수행합니다. 더 나은 성능을 얻을 수는 있지만 삽입하려는 항목에 대해 save() 함수가 실행되지 않습니다 (유효성 검사는 여전히 쿼리를 제출하기 전에 실행 됨). insertMany()here에 대한 자세한 내용을 볼 수 있습니다. 나는 한 번에 50 개 미만 항목을 삽입해야하고 내 모델이 복잡하고있는 경우 pre/post-save 미들웨어 기능이 그들에 부착 된 경우

개인적으로 나는 create()를 사용합니다.

내 모델이 복잡하지 않고 한 번에 50 개 이상의 항목을 정기적으로 삽입해야한다면 insertMany()을 사용합니다.