0
私のプロジェクトでMongoDB操作にMongooseを使用しています。私がしようとしている:見つかったから複数のドキュメントのフィールドをオブジェクトに保存する
- が
- は、新しいオブジェクトを作成するすべての文書照合クエリを見つけるすべての文書は、フィールドの保存
objects
- 内に新しいオブジェクトを作成したため
- (のはそれ
objects
を呼びましょう)ドキュメントを作成したオブジェクト
これはうまくいきます。私objects
文書が発見された場合、別のコレクション
objects
- :しかし、私はまたしたいです第二部のための
私のコードは次のようになります。
for(var i in objects) {
if(objects.hasOwnProperty(i)) {
Model.findOne({name: objects[i].name, id: objects[i].id}, function(e, document) {
if(e) console.error(e);
if(document) {
console.log("Found matchind document"); //This is showed for each object, as expected.
objects[i].newField = document.someData;
objects[i].evenNewerField = document.someMoreData;
}
});
}
}
console.log(objects); //This shows old data from previous operations, no new data from the for loop
私は数分前にそれを理解しました。これをどうすればいいですか? –
私はそれを行うための良い方法は実際には表示されません、それはJavaScriptの問題です、あなたはどこでも/には使用できません。約束やイベントシステムを使いたいと思うかもしれません。しかし、私は最良の方法はあなたのコールバックであなたのconsole.log(またはあなたが代わりにやりたいこと)を呼び出すことだと思う(すべての繰り返しでそれを行うため)。あなたが一度だけ呼び出す何かを持っていない限り、それは私の意見では最良の方法です – Spouark
ポイントは、私はページ(エクスプレス)をレンダリングしているので、forループの後にそれを呼び出したいです。私はそれをループに入れましたが、ループが最後に実行されているときだけ呼び出します。それは部分的には機能しますが、それでも私が望む結果は得られません。私はあなたの答えを受け入れるでしょう、どのように私は解決策を探すべきかを指摘しています。 –