Node.js NoDEJS、MunGDB更新、异步、回调不被认为是一个函数
我对下面的代码有问题。一切正常,直到db.collection.update 在at控制台.log(N.6)中,回调不再被考虑为函数。我不明白为什么 控制台显示: 回调(错误代码404) TypeError:对象不是函数Node.js NoDEJS、MunGDB更新、异步、回调不被认为是一个函数,node.js,mongodb,asynchronous,express,asynccallback,Node.js,Mongodb,Asynchronous,Express,Asynccallback,我对下面的代码有问题。一切正常,直到db.collection.update 在at控制台.log(N.6)中,回调不再被考虑为函数。我不明白为什么 控制台显示: 回调(错误代码404) TypeError:对象不是函数 var newData = req.body; ... async.waterfall([ function(callback){ console.log('n3'); db.getConnection(callback); },
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){
...
});
有人能澄清一下吗?发生的事情是回调有三个参数:错误(如果有)、修改的记录数和状态对象<代码>瀑布处理错误参数,但最后两个作为参数传递给后续的
瀑布
函数(n6),回调作为第三个参数提供,而不是第二个参数
因此,您需要将代码的这一部分更改为:
...
function(dossiers, callback){
console.log('n5');
dossiers.update({'_id': mongodb.ObjectID(id)}, {$set:newData}, callback);
},
function(numModified, status, callback){
console.log('n6');
...
Thanx,真的。我很清楚。当我做console.log参数时,我明白了你的意思。