javascript - 用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 (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/

相关文章:

javascript - 您能否像将函数转换为 Javascript 中的字符串那样,将方法转换为 Java 中的字符串?

javascript - 如何禁用 HTML 视频播放器播放速度/三个点

家庭地址的 javascript 验证。前 : #55 Bernahrd Gym

mongodb - Nifi 密码和其他敏感字段的安全参数存储

java - 为什么我将 ORG.mongodb.smth 添加到依赖项中,然后导入 COM.mongodb.smth?

node.js - 使用 body-parser 进行中间件解析的顺序

javascript - IE9图片过多时触发img元素onerror事件

mongodb - 忽略匹配条件之前的特殊字符

javascript - Express.js/React.js 页面刷新状态持久化

javascript - Node Express Passport 与 Angular - 不兼容?