我已检查过该主题的所有帖子,并在迭代器中添加了一个回调。 但是,它似乎不起作用。
async.forEachOf(scoreTree.nodes, function (node,key, callback){
if(!node.composition.weights){
mongooseCall.etc.find({}
}
,function (err, data) {
//some synchronous code
//use data to update node...
callback(null);
});
}
},function (err) {
lastCall(err, scoreTree, function () {scoreTree.save();});
});
感谢您的帮助! 马鲁万。
答案 0 :(得分:0)
开发者控制台是您的朋友,并会向您显示代码可能出现的错误 - 看起来您的{
太多mongooseCall.etc.find({}
试试这样:
async.forEachOf(scoreTree.nodes, function (node,key, callback){
if(!node.composition.weights){
mongooseCall.etc.find({}
// } <- This is the one too many
,function (err, data) {
//some synchronous code
//use data to update node...
callback(null);
});
}
},function (err) {
lastCall(err, scoreTree, function () {scoreTree.save();});
});
答案 1 :(得分:0)
实际上,我在mongodb的调用中删除了一些代码,我忘了一个}。 这里的主要问题是没有为所有节点调用“回调”。 添加else,修复问题。
async.forEachOf(scoreTree.nodes, function (node,key, callback){
if(!node.composition.weights){
mongooseCall.etc.find({}
// } <- This is the one too many
,function (err, data) {
//some synchronous code
//use data to update node...
callback(null); //not called in all the cases
});
}else{
//this needs to be added
callback(null);
}
},function (err) {
lastCall(err, scoreTree, function () {scoreTree.save();});
});