Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js NoDEJS、MunGDB更新、异步、回调不被认为是一个函数_Node.js_Mongodb_Asynchronous_Express_Asynccallback - Fatal编程技术网

Node.js NoDEJS、MunGDB更新、异步、回调不被认为是一个函数

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); },

我对下面的代码有问题。一切正常,直到db.collection.update

在at控制台.log(N.6)中,回调不再被考虑为函数。我不明白为什么

控制台显示: 回调(错误代码404) TypeError:对象不是函数

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参数时,我明白了你的意思。