我的代码存在问题。一切顺利,直到db.collection.update。
在console.log(n.6),回调不再被视为一个函数了。我不明白为什么。
控制台显示: 的回调(errorCode404) TypeError:object不是函数
var newData = req.body;
...
async.waterfall([
function(callback){
console.log('n3');
db.getConnection(callback);
},
function(db, callback){
console.log('n4');
db.collection('dossiers', callback);
},
function(dossiers, callback){
console.log('n5');
dossiers.update({'_id': mongodb.ObjectID(id)}, {$set:newData}, callback);
},
function(result, callback){
console.log('n6');
if(result != 1) {
console.log('n6.1');
callback(errorCode404);
}
console.log('n6.2');
callback(null, 'Dossier mise a jour.');
}
], function(err, result){
...
});
有人能澄清一下吗?
答案 0 :(得分:1)
发生的事情是update
回调有三个参数:错误(如果有),修改的记录数和状态对象。 waterfall
处理错误参数,但最后两个作为参数传递给后续waterfall
函数(n6),回调作为第三个参数提供,而不是第二
因此,您需要将代码的这一部分更改为:
...
function(dossiers, callback){
console.log('n5');
dossiers.update({'_id': mongodb.ObjectID(id)}, {$set:newData}, callback);
},
function(numModified, status, callback){
console.log('n6');
...