Node.js MongoDB collection.update()回调从未被调用过

时间:2016-03-05 03:50:18

标签: node.js mongodb

有人可以解释为什么下面的回调永远不会被调用吗?

永远不会调用回调的更新工作。我错过了什么吗?

collection.update({_id:partner._id}, 
                    {$set: {
                            groups: newGroups
                          }
                    },
                    { upsert: false, w: 1 },
                    function(err, status){
                      console.log("update callback ");
                      if (err){
                        console.log("Error updating "+err.message);
                        callback(false);
                      } else {
                        console.log("Record updated as "+JSON.stringify(status));
                        callback(true);
                      }
                    }
  );

2 个答案:

答案 0 :(得分:0)

你可以将它包装在一个带回调作为参数的函数中:

    //Except for callback as a parameter, every parameter is not compulsory
    function yourFunctionName(id, newGroups, callback) {
      collection.update({
          _id: partner._id
        }, {
          $set: {
            groups: newGroups
          }
        }, {
          upsert: false,
          w: 1
        },
        function(err, status) {
          console.log("update callback ");
          if (err) {
            console.log("Error updating " + err.message);
            callback(false);
          } else {
            console.log("Record updated as " + JSON.stringify(status));
            callback(true);
          }
        }
      )
    }

然后调用这个函数:

yourFunctionName(params, function(result) {
  //Do anything with the result
});

如果您想了解回调函数的工作原理,this可能会对您有所帮助。

答案 1 :(得分:-1)

例如在node(sailsJs)

Model.update({id:'xxxxxxxxxxxxxxxx'},{name:'Flynn'}).exec(function afterwards(err, updated){

if (err) {
//handle error here!
return;
}

console.log('Updated user to have name ' +    updated[0].name);
 });