2017-12-30 13 views
1

使用してPOSTリクエスト経由でのMongoDBに複数のドキュメント/レコードを挿入しようとすると:私は現在のMongoDBとNodeJSを使用してAPIを構築しています、と私はPOSTリクエストを行うために次のコードブロックを持っている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

モングースを使用して行うには2通りの方法があります。

  1. Model.create() - それはデータベースに挿入されるオブジェクトの配列を受け取り、アイテムの数を挿入するようにデータベースに限り多くのクエリーを行います。レコードをたくさん挿入したい場合はパフォーマンスヒットになりますが、それぞれのレコードに対してsave()メソッドを呼び出すMongooseのメリットが得られます。つまり、prepostのミドルウェア関数がトリガーされます。メソッドhereについて詳しく読むことができます。

  2. Model.insertMany() - これは、挿入するオブジェクトの配列も受け入れますが、これは単一のデータベース操作で行います。パフォーマンスは向上しますが、挿入する項目に対してはsave()関数は実行されません(照会を実行する前に検証が実行されます)。 insertMany()hereについて詳しく読むことができます。個人的に

私は一度に50の未満の項目を挿入する必要があれば、私のモデルは複雑であり、それらに添付pre/post-saveミドルウェアの機能を持っている場合、私はcreate()を使用します。

私のモデルが複雑でない場合は、私はinsertMany()を使用し、一度に50個以上のアイテムを定期的に挿入する必要があります。

関連する問題