node.js - 使用 Mongoose 动态更新子文档中的数组
问题描述
我需要更新子文档中的数组字段并且有效
User.findOne({ _id: id }, (err, user) => {
if (!user) res.json({ error: "Email has not be found" });
user.set({ "files.0.approved": isApproved });
user.save((err, updatedUser) => {
return res.send(updatedUser);
});
});
不过,我想知道如何使它变得动态?因为在这里我手动传递索引 - files.0.approved
。
我尝试使用模板字符串,但它抱怨。
我也尝试过参考here,但无法弄清楚。
如果我们假设我可以得到数组的索引req.body.index
,如何防止它被硬编码?
解决方案
我设法做到了这一点。
User.findOneAndUpdate(
{ _id: id, "files._id": file_id },
{ $set: { "files.$.approved": isApproved } },
(err, updatedUser) => {
if (err) res.json({ error: "Something went wrong" });
res.json({ message: "success" });
}
);
显然,您最初找到了需要更新的文件,然后 mongoose 具有$
指向已找到的索引的运算符。
推荐阅读
- python - Python中图像中每个晶体的不规则面积测量
- mongodb - 将列的最大值与另一列进行比较
- reactjs - 错误:请求的资源上不存在“Access-Control-Allow-Origin”标头
- r - 使用 %in% 时的浮点问题
- paraview - 在 Paraview 中计算张量的转置
- python - 使用 jinja(烧瓶)在 2 个单独的列中使用 2 个循环数据?
- ios - 旁白:UIAccessibilityLayoutChangedNotification 不起作用
- python-3.x - 跨两个列表框移动项目时,Python tkinter 保持名称顺序一致
- typescript - typescript 动态导入与 tsconfig.json 中的 webpack.config 冲突?
- python - 从包含python中字典的嵌套列表创建字典