1. ホーム
  2. node.js

[解決済み] Mongoose/Node.jsで複数のドキュメントを同時に保存するにはどうしたらいいですか?

2023-04-06 03:38:06

質問

現在、私は1つのドキュメントを追加するために保存を使用しています。 私が単一のオブジェクトとして保存したいドキュメントの配列を持っているとします。 単一の関数呼び出しでそれらをすべて追加し、それが完了したときに単一のコールバックを取得する方法はありますか? 私はすべてのドキュメントを個別に追加することができましたが、すべてが完了したときにワークアウトするコールバックを管理することは問題でしょう。

どのように解決するのですか?

Mongoose にはまだ一括挿入が実装されていません ( 問題番号723 ).

保存するドキュメントの数がわかっているので、このように書くことができます。

var total = docArray.length
  , result = []
;

function saveAll(){
  var doc = docArray.pop();

  doc.save(function(err, saved){
    if (err) throw err;//handle error

    result.push(saved[0]);

    if (--total) saveAll();
    else // all saved here
  })
}

saveAll();

もちろん、これはその場しのぎの解決策であり、何らかのフローコントロールライブラリ(私は q を使用していますが、これは素晴らしいものです)。