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 => {
// ...
});
}
我希望在每次发出请求时增加 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 => {
// ...
});
}