我正在尝试更新mongo数据库中的字段。但是,出现空心错误。
MongoError:对路径“ _id”执行更新会修改 不变字段“ _id”
我要更新的代码。
app.put("/api/inventory/:sku", (req, res, next) => {
const inventory = new Inventory({
_id: req.body.id,
sku: req.body.sku,
total_qty: req.body.total_qty,
current_qty: req.body.current_qty
});
Inventory.updateOne({ sku: req.params.sku }, req.body).then(result => {
res.status(200).json({ message: "Update successful!" });
});
});
答案 0 :(得分:2)
似乎您只需要更新一条Inventory
记录。您可以简单地做到这一点:
app.put("/api/inventory/:sku", (req, res, next) => {
return Inventory.updateOne(
{ sku: req.params.sku }, // <-- find stage
{ $set: { // <-- set stage
id: req.body.id, // <-- id not _id
sku: req.body.sku,
total_qty: req.body.total_qty,
current_qty: req.body.current_qty
}
}
).then(result => {
res.status(200).json({ message: "Update successful!" });
});
});
您无需创建新的Inventory
等,因为您需要做的就是基于sku
答案 1 :(得分:0)
_id
是自动生成的-有关其含义的更深入说明,请参见this answer。
您无法创建此字段-它是在创建任何新文档时创建的。您需要使用id
字段(不加下划线_
):
const inventory = new Inventory({
id: req.body.id,
sku: req.body.sku,
total_qty: req.body.total_qty,
current_qty: req.body.current_qty
});