我的数据来自用户,并被存储为一个对象,该对象需要在服务器端进行一些消息处理后进入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
中,当我只需要对象本身时,我将推送一个对象数组,因此要么我必须对每个要插入的对象进行一次数据库调用,这似乎是浪费资源,要么我需要找到一种方法来插入所有对象,而不是将它们包装在一个数组中。
因为某些原因,我想不通这件事。有什么想法吗?
https://stackoverflow.com/questions/52680388
复制相似问题