我需要更新子文档中的数组字段并且有效
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
获取数组的索引,那么如何防止对其进行硬编码?
答案 0 :(得分:1)
我设法做到了。
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" });
}
);
显然,您最初会找到需要更新的文件,然后猫鼬的$
运算符指向已找到的索引。