如何更新订单状态?

时间:2021-02-02 08:16:04

标签: node.js reactjs express mongoose

我正在尝试创建电子商务网站。其中 admin 更新订单状态。在某处我找到了逻辑,但我无法在邮递员中更新订单状态,也无法建立前台 到此为止。有人请帮忙解决这个问题吗?

exports.updateStatus = (req, res) => {  
    Order.updateOne(
       { _id: req.body.orderId },
       { set: { status: req.body.status } },
       { new: true },
       (err, order) => {
       if (err) {
           return res.status(400).json({error: "Cannot update order status"});
       }
       res.json(order);
    });
};

2 个答案:

答案 0 :(得分:1)

基于 req.body 使用 req.body._id 而不是 req.body.orderId 并且不需要使用 set 并且 {new : true} 将返回修改后的文档而不是原始文档。 updateOne 没有这个选项。如果您需要回复作为更新的文档,请使用 findOneAndUpdate

exports.updateStatus = (req, res) => {  
    Order.findOneAndUpdate(
       { _id: req.body._id},
        { status: req.body.status } ,
       { new: true },
       (err, order) => {
       if (err) {
           return res.status(400).json({error: "Cannot update order status"});
       }
       res.json(order);
    });
};

答案 1 :(得分:0)

您正在尝试将 onNext 选项与 {new: true} 方法结合使用。 此方法不支持此选项。

您应该使用支持 updateOnefindOneAndUpdate 并返回更新的文档(请参阅 Docs)。

所以你的代码看起来像:

{new: true}