【发布时间】:2022-01-09 01:16:49
【问题描述】:
我有一个产品,我需要更新产品的数量。使用 findOneAndUpdate 时请求成功,但数据库中的数据没有改变。
代码:
exports.updateQuantity = (req, res) => {
Item.findOneAndUpdate(
{ _id: req.body.id }, //condition
{ quantity: 2 }, //update
{ new: true },
function (err, product) {
if (err) {
res.status(400).json(error);
} else {
res.status(201).json("product updated");
}
}
);
};
路线:
router.post("/updateQuantity", updateQuantity);
我也试过给{$set :{ quantity: 2 }},但似乎没有更新。
还尝试切换到放置而不是发布。但没有希望。
【问题讨论】:
-
必须没有匹配的产品
-
尝试用
async包装你的函数,并在查询await Item.findOneAndUpdate(之前放置 await -
@AlexBlex id 确实存在。我确实在创建产品后复制了 id 并在数据库中进行了交叉检查。
-
数据库中的_id和req.body.id中的_id是同一类型吗?前者默认是 ObjectId,后者是字符串,除非你对请求参数进行猴子补丁。
-
@AlexBlex 是的,问题是我的我的 obj 有另一个数组,其中有相同的类型 _id(差异值)
标签: node.js mongodb express mongoose