Javascript 用express更新了文档

Javascript 用express更新了文档,javascript,mongodb,express,Javascript,Mongodb,Express,我正在尝试使用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 (o

我正在尝试使用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


我有许多其他的路由都可以正常工作。

没有版本问题。然后调用函数的值为非承诺值

您需要在更新中调用回调函数

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

您是否使用了正确的集合名称?集合名称可能区分大小写。mongodb驱动程序的版本是什么?您正在使用本机库吗?应该尝试“.catch((err)=>{console.log(err)})”。这可能会帮助您获得实际错误。请指定MongoDB驱动程序的版本。你在用猫鼬吗?我添加了更多细节。我有其他的路线可以和同一个系列对话,效果很好。版本v4.0.2。