Mongodb findOneAndUpdate不会更新,除非我调用";。然后();。为什么?
我一辈子都搞不懂为什么我对Mongodb findOneAndUpdate不会更新,除非我调用";。然后();。为什么?,mongodb,mongoose,Mongodb,Mongoose,我一辈子都搞不懂为什么我对findOneAndUpdate的调用不更新任何内容,除非我用处理返回的承诺。然后()。我不在乎电话的回音,所以我不必费心处理这个承诺 这不起作用: MyModel.findOneAndUpdate({key: 'XXXXX'}, {$set: {status: 'complete'}}) 这项工作: MyModel.findOneAndUpdate({key: 'XXXXX'}, {$set: {status: 'complete'}}).then() 在结尾添加
findOneAndUpdate
的调用不更新任何内容,除非我用处理返回的承诺。然后()
。我不在乎电话的回音,所以我不必费心处理这个承诺
这不起作用:
MyModel.findOneAndUpdate({key: 'XXXXX'}, {$set: {status: 'complete'}})
这项工作:
MyModel.findOneAndUpdate({key: 'XXXXX'}, {$set: {status: 'complete'}}).then()
在结尾添加.then()
当然不会对我造成任何伤害,但我只是好奇为什么没有它调用就不能工作。它不应该仍然执行查询吗
这些人似乎在问同样的问题,但至今仍未解决:原因是:
.then()执行如图所示的函数
例如,下面的代码将执行3个updateMany()调用,一个
因为回调,两个是因为调用了两次.then()
你从哪里得到这个报价的?如果传递回调,则执行查询,否则返回查询对象。这能解决你的问题吗?文件确实很清楚。这就是原因。至于使用
exec()
,恕我直言,这不是我的问题。它和then()
配合得很好,我只是想知道为什么。事实上,这不是你的问题啊哈。您可以在这里看到then()执行查询的确切原因:“例如,下面的代码将执行3个updateMany()调用,一个是因为回调,两个是因为.then()被调用了两次。”!(我还回答了你发布的另一个链接,也许这个人会看到)
const q = MyModel.updateMany({}, { isDeleted: true }, function() {
console.log('Update 1');
});
q.then(() => console.log('Update 2'));
q.then(() => console.log('Update 3'));