use*_*858 5 javascript mongoose mongodb node.js
我正在尝试更新 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!" });
});
});
Run Code Online (Sandbox Code Playgroud)
看来你只需要更新一条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!" });
});
});
Run Code Online (Sandbox Code Playgroud)
无需创建新Inventory等,因为您只需要根据以下内容更新现有的sku
这是有关updateOne 的更多文档
_id是自动生成的 - 有关它是什么的更深入的解释,请参阅此答案。
您无法创建此字段 - 它是在您创建任何新文档时创建的。您需要使用该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
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29985 次 |
| 最近记录: |