【发布时间】:2020-05-22 23:00:08
【问题描述】:
我有一个功能齐全的 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);
save() 没有更新数据库端的现有文档。我在控制台记录了 list.vendors 对象数组确实被更改了,但 save() 并没有进行保存。
编辑: 关于使用保存方式的说明,这种格式也不起作用:
list.save().then(res.json(list));
编辑 2: 为了回答有关查看日志的问题,我无法发布完整的 console.log(list.vendors),因为它包含私人信息,但是,我可以确认对列表所做的更改正在显示当我在 VendorSchema 中运行以下命令时:
VendorSchema.post('save', function () {
console.log(util.inspect(this, { maxArrayLength: null }));
});
但是,保存仍然没有改变数据库端。
【问题讨论】:
-
.删除
const updated.尝试返回list -
@AnkushVerma 我做到了。这是基于
save()的 Mongoose 文档解决问题的新尝试。之前只是list.save().then(res.json(list))也没有保存。 -
您是否可以提供任何错误?
-
尝试将此代码添加到您的模型中。
SchemaName.post('save',function(){ console.log(this)}) -
1- 你确定在 db 中有一个 id = 1 的供应商吗? .... 2-如果是,console.log(list),并检查它是否有供应商数组? .... 3- console.log(indexOfUpdate) 太...您能否将所有这些日志添加到问题中,以及供应商模式?
标签: javascript mongodb mongoose