使用Mongoose动态更新子文档中的数组

时间:2018-10-27 13:47:28

标签: node.js database mongodb mongoose nosql

我需要更新子文档中的数组字段并且有效

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获取数组的索引,那么如何防止对其进行硬编码?

1 个答案:

答案 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" });
    }
  );

显然,您最初会找到需要更新的文件,然后猫鼬的$运算符指向已找到的索引。