tee*_*eej 1 javascript mongoose mongodb
我有一个功能齐全的 CRUD 应用程序,我正在为其构建一些附加功能。新功能允许用户更改供应商列表。他们可以添加新供应商、更新供应商和删除供应商。添加和删除似乎工作得很好,但更新似乎不起作用,即使它遵循我在应用程序其他地方的现有 CRUD 功能中使用的类似方法。这是我的代码:
// async function from AXIOS request
const { original, updatedVendor } = req.body;
let list = await Vendor.findOne({ id: 1 });
if (!list) return res.status(500).json({ msg: 'Vendors not found' });
let indexOfUpdate = list.vendors.findIndex(
(element) => element.id === original.id
);
list.vendors[indexOfUpdate].id = updatedVendor.id;
list.vendors[indexOfUpdate].name = updatedVendor.name;
const updated = await list.save();
res.json(updated);
Run Code Online (Sandbox Code Playgroud)
不会save()更新数据库端的现有文档。我已经控制台记录了list.vendors对象数组确实正在更改,但save()没有进行保存。
编辑:关于使用保存方式的注释,这种格式也不起作用:
list.save().then(res.json(list));
Run Code Online (Sandbox Code Playgroud)
编辑 2:为了回答有关查看日志的问题,我无法发布完整的 console.log(list.vendors),因为它包含私人信息,但是,我可以确认当我运行时,对列表所做的更改会显示出来VendorSchema 中的以下内容:
VendorSchema.post('save', function () {
console.log(util.inspect(this, { maxArrayLength: null }));
});
Run Code Online (Sandbox Code Playgroud)
然而,保存仍然没有改变数据库端。
由于您使用的是嵌套对象,Mongoose 将无法检测到所做的更改。您需要在之前将修改标记为对象save
list.markModified('vendors');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
880 次 |
| 最近记录: |