我正在尝试创建电子商务网站。其中 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);
});
};
答案 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}
方法结合使用。
此方法不支持此选项。
您应该使用支持 updateOne
的 findOneAndUpdate
并返回更新的文档(请参阅 Docs)。
所以你的代码看起来像:
{new: true}