我正在尝试使用 mongoDB 并更新当前文档的状态。我的后端正在接收我的 mongoDB 更新未经过的路由。
router.post('/orders_drivers', function (req, res, next) {
console.log(req.body);
Order.update({_id:objectId(req.body.id)}, {$set: {driver:req.body.driver, driverReq:false}}).then (function (order) {
console.log('UPDATE new driver');
}).catch (next)
});
当我记录 req.body 时,我收到的 ID 和新的 $set
参数是正确的,但该命令从未执行过。有什么建议么?我也没有收到任何我认为很奇怪的错误。
Mongo版本是v4.0.2
我还有许多其他路线都可以正常工作。
最佳答案
不存在版本问题。您正在调用 then 函数的不可 promise 值。
您需要在更新内部调用回调函数。
const mongoose = require('mongoose');
router.post('/orders_drivers', function (req, res, next) {
console.log(req.body);
Order.update({
_id: mongoose.Types.ObjectId(req.body.id)
},
{
$set: {
driver:req.body.driver, driverReq:false
}
},
{ new: true }, // If you want to return updated order
function (err, updatedOrder) {
if (err) throw err;
console.log('UPDATE new driver', updatedOrder);
})
});
如果已经是,则无需将 req.body.id 转换为 mongoose ObjectId。
关于javascript - 用express更新了文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54859937/