dev*_*ill 9 mongoose mongodb node.js
我使用mongoosejs和node更新多个记录时遇到问题.出于某种原因,我只更新单个记录,即使多个匹配.我也注意到回调不会在.update()之后触发.我没有收到任何错误消息.这里发生了什么?
Page.find({status:'queued'})
.limit(queue_limit-queue.length)
.update({ status: 'active' },{ multi: true },function(err,num){
console.log("updated "+num);
//this callback will never fire, but a single record will be updated and marked as active.
});
Run Code Online (Sandbox Code Playgroud)
Joh*_*yHK 17
Query#update不接受options参数,但Model.update确实如此.所以你想把它重写为:
Page.update({status:'queued'}, {status: 'active'}, {multi: true},
function(err, num) {
console.log("updated "+num);
}
);
Run Code Online (Sandbox Code Playgroud)
我不确定你limit在链中的调用尝试了什么,但你不能在更新中使用它.
UPDATE
以上查询将更新所有文档{status: 'queued'}.您唯一的选择update只是第一个匹配的一个{multi: false}或所有匹配{multi: true}.
听起来像是你需要返工件事情要文档了你的队列一次一个,并切换到findOneAndUpdate,而不是update使您可以访问你从更新的文档'queued'来'active'.