Мои данные поступают от пользователя и сохраняются в виде объекта, этот объект должен перейти в 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
, я буду выдвигать массив объектов, когда мне нужно простосами объекты, так что я либо должен сделать один вызов базы данных для каждого объекта для вставки, что кажется пустой тратой ресурсов, либо мне нужно найти способ вставить все объекты, не помещая их в массив.
По какой-то причине я не могу понять это.Есть идеи?