Mongodb 更新功能仅在包含 .then() 时有效

Mongodb update function only works when .then() is included

我希望在每次发出请求时增加 mongodb 中的一个字段。我的更新函数只有在函数调用后包含 .then() 时才有效,我不明白为什么。

代码正在运行,但我想了解为什么我需要包含 .then()。适配器函数以任何一种方式调用,但更新仅在函数调用后包含 .then() 时出现在数据库中。

更新函数:

updateRequestCount: (id) => {
    return Entry.updateOne({id: id }, { '$inc': { requestCount: 1 } });
}

作品:

updateRequestCount(request.query.id)
.then();

无效:

updateRequestCount(request.query.id);

当您在 Mongoose 上调用模型的 Model.updateOne() 或任何其他 CRUD 方法时,它 return 是一个 Query 对象,该对象具有将执行查询的 then() 方法和 return 一个 Promise.

因此,当您调用 updateOne() 时,查询不会立即执行,而只会在您对 returned 查询对象调用 then() 时才执行。

或者,您可以将回调函数传递给 updateOne(),在这种情况下,查询会立即执行,您不必调用 then():

updateRequestCount: (id) => {
  return Entry.updateOne({id: id }, { '$inc': { requestCount: 1 } }, err => {
    // ...
  });
}