Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb findOneAndUpdate不会更新,除非我调用";。然后();。为什么?_Mongodb_Mongoose - Fatal编程技术网

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'));