最近、マングースの問題に遭遇しました。これが私のコードです:
var v, query;
for(var i=0; i<values.length; i++) {
v = values[i];
query = model.findOne({type:v});
query.exec(function(err, doc) {
if(doc == undefined) {
var m = new model({type:v, count:0});
// but the 'v' above is not the values[i] in the for loop
// code to save comes here
} else {
doc.count++;
// update code comes here
}
});
}
doc が null かどうかを確認し、null の場合はデータベースにデフォルト値を入力します。ドキュメントが返された場合は、そのプロパティを更新します。問題は、保存しようとしているオブジェクトのプロパティの 1 つとして値 [i] があることです。しかし、これはコールバックであるため、for ループにある特定の値は取得されません。
モデルの作成中にすべての異なる値のデフォルト オブジェクトを挿入することでこれを回避しましたが、コード フローのこの時点でこれを行う方法はありますか?