2016-03-05 3 views
0

Может ли кто-нибудь объяснить, почему обратный вызов ниже никогда не вызван?Node.js MongoDB collection.update() 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); 
         } 
        } 
); 
+1

Я думаю, может быть, вы могли бы говорить о внешнем контексте 'обратного вызова()' функция, которая должна быть ссылка в обертке этого вызова, который не показывает Вот. Обычно ожидаемая подпись - 'function (err, content)' где 'err' будет чем-то или' null', а не возвращаемыми значениями true/false. Вы могли бы лучше объяснить, указав полный контекст вызова. –

ответ

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

Например, в узле (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); 
}); 
Смежные вопросы