#javascript #node.js #mongodb #mongoose
#javascript #node.js #mongodb #mongoose
Вопрос:
Я пытаюсь обновить документ mongoose, но это глубоко вложенный массив объектов, и у меня возникают проблемы с обновлением его с помощью оператора распространения. У меня есть массив ссылок на изображения, и я хочу выполнить итерацию по массиву отношений в базе данных и добавить изображение к каждому отношению. Код показывает мой подход, но синтаксис неправильный. Я добавил изображение базы данных, которое показывает, куда я хочу добавить переменную image.
// Get Images
const imagesData = await axios.get(
"https://randomuser.me/api/?results=4amp;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();
}
Также я использую запрос mongoose внутри цикла for. Это правильный способ сделать это.
mognoDB
Ответ №1:
Вы должны извлечь нужный документ. Затем обработайте полученный объект как объект javascript и добавьте или обновите все, что хотите, затем используйте .save()
функцию, предоставляемую mongoose.
let result = await Companies.findById(id);
result = result.map((company)=>{
update your object here
})
result.save()
.save()
Функция позаботится об обновлении объекта в базе данных