【问题标题】:How to retrieve items inside of the array instead of the array itself in javascript如何在javascript中检索数组内部的项目而不是数组本身
【发布时间】:2018-10-07 08:24:45
【问题描述】:

我的数据来自用户并存储为一个对象,该对象需要在服务器端进行一些按摩后进入 Mongo。我正在使用 Mongoose 并使用 $push {item} 语法将项目插入到我的数据库中。

我的 Mongoose 模型有 photos: [] 作为语法,只是一个简单的数组。在该数组中,我需要上传照片。但是,如果用户在不同时间上传,我的数组可能会以一组数组结束,而我只需要一个包含多个对象的简单数组。

这是我的路线:

const testMedia = async (req, res) => {
  //loop through the res.locals.ids and save each as their own photo in the event
  let events = [];
  let photosArray =
  let owner = {id: req.user._id};
  const promises =  await res.locals.ids.map((photoLink) => {
     events.push({link: photoLink.link,
     dateUploaded: new Date(Date.now()).toLocaleString(),
     eventID: req.body.eventId,
     owner: owner
     })
  });
  await Event.findByIdAndUpdate(
      req.body.eventId,
      { $push: {
        photos: events
      }},
      { save: true, upsert: true, new: true },
      (err) => {
        if (err){
          console.log("Error in testMedia  ||  " + err);
          res.sendStatus(300);
        }
      }
    );

  await Promise.all(promises);
  res.render("eventDisplay", { events: event });
  res.end();
};

我遇到的问题是,如果我将项目推送到events,当我只需要对象本身时,我将推送一组对象,所以我必须对每个对象进行一个数据库调用才能插入,这似乎是一种资源的浪费,或者我需要找到一种方法来插入所有对象而不将它们包装在一个数组中。

由于某种原因,我无法弄清楚这一点。有任何想法吗?

【问题讨论】:

    标签: javascript arrays mongodb mongoose javascript-objects


    【解决方案1】:

    根据 Mongo 文档,您可以使用 $each

    .findByIdAndUpdate(req.body.eventId, {
      $push: {
        photos: { $each: events }
      }
    })
    

    这会将多个项目推送到您的数组中。

    【讨论】:

    • 非常感谢!哇好简单。我会浏览文档,看看我是怎么错过的。
    猜你喜欢
    • 2021-10-22
    • 2021-06-21
    • 1970-01-01
    • 2011-12-27
    • 2021-12-12
    • 1970-01-01
    • 2020-08-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多