使用express

时间:2019-02-25 05:22:04

标签: 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 (order) {
        console.log('UPDATE new driver');
    }).catch (next)
});

当我记录req.body时,我收到的ID和新的$set参数是正确的,但是命令从不执行。有什么建议么?我也没有收到任何我认为很奇怪的错误。

Mongo版本为v4.0.2

我还有许多其他路线都可以正常工作。

1 个答案:

答案 0 :(得分:1)

没有版本问题。您正在呼叫,然后以不可承诺的值运行。

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

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转换成猫鼬ObjectId(如果已经存在)。