2016-12-31 97 views
2

我想更新多个文件,所以我必须使用循环,但下面的代码被破坏,因为它有多个res.json。异步mongodb调用for循环

for (i = 0; i < dateArray.length; i ++) { 
     Trucks.update({ 'data.date': dateArray[i] }, {'$set': update}, {'multi':true}, function(err,response){ 
     res.json(response); 
     }) 
    } 

我可以把res.end(),但我想,当操作完成就知道了。

如何使用异步模块来改进它?我想知道手术何时完成。

+0

你介意使用另一个库蓝鸟和承诺,而不是回调?如果是这样,这可以很容易地完成...让我知道。 –

+0

@NidhinDavid我找到了一个解决方案,只需在async npm中使用'async.forEach' –

回答

0

我不认为这是很好的解决方案。这只是一个黑客。

我认为它符合您的需求。祝你好运。

var docsUpdated = 0; 
var length = dateArray.length; 
for (i = 0; i < length; i++) { 
    Trucks.update({ 
    'data.date': dateArray[i] 
    }, { 
    '$set': update 
    }, { 
    'multi': true 
    }, function(err, response) { 
    if(err) res.end(); 
    docsUpdated += response; 
    if(i === length-1){ 
     res.json(docsUpdated); 
    } 
    }) 
}