使用Node.js中的mongoose更新MongoDb中数组中任何特定索引的元素

z4iuyo4d  于 2023-02-07  发布在  Go
关注(0)|答案(1)|浏览(132)

嗨,我尝试更新数组中特定索引处的元素,但无法更新。它正在更新整个数组。无法确定如何更新任何特定索引。还尝试了{$set:{“Data.1:req.body}}这是在第一个索引处更新,但我不想硬编码索引值。它应该从前端获取。假设我有一个架构,其中有类型为数组的数据,默认值如下所示或相同格式的任何内容。数据:{类型:数组,默认值:[“0”,“1”,“0”] }每当我创建一个用户,那么数据字段将包含这些默认值,但现在我想更新在任何索引(来自前端)的任何用户创建的数据数组的值。
我尝试了findByIdAndUpdate方法,但我不知道在set属性中传递什么。如果我传递此{$set:req.body}和在postman中我给了Data的任意值,那么显然它正在更新Data数组,但是我想更新我从frontend传递过来的任意索引处的值,假设我传递过来的索引是2,那么它应该更新索引2处数组的值,类似地我可以从frontend传递任意索引,我应该怎么做呢?先谢了
等待任何帮助或建议。谢谢

dxxyhpgq

dxxyhpgq1#

如果从前端传递索引,似乎可以在后端逻辑中解决这个问题。
在发送查询之前,可以根据前端的输入动态地指定索引。

const updateUserData = async (req, res) => {
  const { index, user_id, new_value } = req.body;

  try {
    const update = {};
    update[`Data.${index}`] = new_value;

    const data = await Users.updateOne(
      { _id: user_id  },
      { $set: update }
    );

    return res.status(200).json({ success: true  });
  } catch (error) {
    return res.status(500).json({ success: false });
  }
};

相关问题