Node.js MongoDB collection.update()回调从未调用过
问题描述:
任何人都可以解释为什么下面的回调永远不会被调用吗?Node.js MongoDB collection.update()回调从未调用过
通过回调工作的更新永远不会被调用。我错过了什么 ?
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);
}
}
);
答
你可以在一个函数回调的PARAM包装:如果你想了解回调函数
yourFunctionName(params, function(result) {
//Do anything with the result
});
:
//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);
}
}
)
}
然后调用这样的功能工作,this可能会帮助你。
答
例如,在节点(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);
});
我想,也许你可能会谈论'回调的外部环境()'你是不是显示它必须在包装此调用引用功能这里。通常情况下,预期的签名是'function(err,content)',其中'err'是一些或'null'而不是你正在返回的'true/false'值。通过给出完整的通话环境,您可以更好地解释。 –