forEach()
ループ内のすべてのドキュメントを更新しようとしていますが、更新は行われていません。 forEach()
が動作していることを確認するたびに、各繰り返しを記録しています。しかし、何らかの理由でupdate()
が動作していません。上述したように、私はconsole.log()
を参照してくださいforEach()ループ内でドキュメントを更新するにはどうすればよいですか?
myModelSchema.methods.updateMyModel = function (cb) {
var myModel = this.model('MyModel');
myModel.find({}, function (err, items) {
items.forEach(function (item) {
console.log('item._id = ' + item._id);
myModel.update(
{
_id: item._id
},
{
$set: {
"some_array.0.some_field": item.some_field
}
}
);
})
});
};
が、文書が更新されていません。
は、ここに私のコードです。私は間違って何をしていますか?
**すべてのドキュメント**を特定の配列要素の定数値に設定するだけではありませんか?実際の「更新する値」が各反復で変更されない限り、ループする必要はありません。あなたがしているように見えるのは、単純な単一の更新ステートメントだけです: 'myModel.update({}、{" $ set ":{" some_array.0.some_field ":someVariable}}、{" multi ":true} (エラー、レスポンス)=> {/ *レスポンスオブジェクト* /}) '。とにかく '.update()'にコールバックがないので、実行されないので、コールバックの完了時にループの実行を制御する必要があります。 –
「ループする」方法ははるかに優れていますが、「ループ」で実際に何をしようとしているのか説明できない場合を除いて、単純にその必要はありません。最新のAPIの '' multi "'パラメータを "暗黙に"含むすべてのマッチしたもの、あるいはupdateMany()を更新するために '' multi "'を適用するだけです。 –