更新猫鼬查询内的深层嵌套对象数组

时间:2020-08-26 18:13:43

标签: javascript node.js mongodb mongoose

我正在尝试更新一个猫鼬的文档,但是它是一个嵌套很深的对象数组,使用扩展运算符无法更新它。我有一个图像链接数组,我想遍历数据库中的关系数组并将图像添加到每个关系中。该代码显示了我的方法,但是语法错误。我添加了一个数据库图像,该图像显示了我想在其中添加图像变量的位置。

 // Get Images
        const imagesData = await axios.get(
          "https://randomuser.me/api/?results=4&gender=male"
        );
        const images = [];
        imagesData.data.results.forEach((result) => {
          images.push(result.picture.large);
        });

        // Update Company
        for (let i = 0; i <= 3; i++) {
          const updateCompany = await Companies.findByIdAndUpdate(
            req.params.id,
            { relationships: [
              ...relationships, 
              relationships[i]: {
                ...relationships[i], 
                image: images[i]}
              ] },
            { new: true }
          ).exec();
        }

我也在for循环中使用猫鼬查询。这是正确的方法吗? mognoDB

1 个答案:

答案 0 :(得分:0)

您应该获取所需的文档。然后将获取的对象视为javascript对象,并添加或更新所需内容,然后使用猫鼬提供的.save()函数。

let result = await Companies.findById(id);
result = result.map((company)=>{
  update your object here
})

result.save()

.save()函数将负责更新数据库中的对象