Я хочу поместить объект в массив с помощью findOneAndUpdate().
Это мой код nodejs.
url = req.params.posturl
filter = { url: url }
update = { comments: (result.like + 1) }
// maybe you can try save/get this to/in .json
Blog.findOneAndUpdate(filter, update)
.then((result) => {
res.json({ status: 1 })
})
.catch((error) => {
console.info(error);
})
Как я могу это сделать?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Попробуй это:
url = req.params.posturl
filter = { url: url }
Blog.findOne(filter)
.then((result) => {
result.like ++;
return result.save();
})
.then(result => {
res.json({status: 1});
})
.catch((error) => {
console.info(error);
})
Я думаю, вы поняли идею. Я не понял, что такое комментарии, но это то, как вы должны попробовать
Я имею в виду комментарии на ютубе. Пользователь входит в систему и комментирует сообщение в блоге.
Итак, комментарий — это вложенный объект внутри поста в блоге, а внутри комментария вам нравится?
Используйте returnOriginal:false драйвера Node.js в качестве третьего аргумента для вашего вызова БД. Измените строку на:
filter = { url: url }
update = { comments: (result.like + 1) }
return = { returnOriginal: false }
Blog.findOneAndUpdate(filter, update, return)
Некоторые люди используют Mongoose, чтобы избежать таких сложностей. Документация по Node.js великолепна, но не очень удобочитаема.
Вы можете использовать оператор $push для обновления массива. На самом деле у вас есть несколько способов обновить документ, например оператор $set, или найти его и изменить документ, а затем сохранить новый документ, это будет обновление вашего документа.
Код TLDR здесь;
const url = req.params.posturl
const newComment = req.body.comment
const filter = { url }
const willBePush = { comments: newComment }
Blog.findOneAndUpdate(filter, { $push: willBePush })
.then((result) => {
/** Do whatever with response if you want to see new document you can pass { new: true } as option for findOneAndUpdate method*/
console.info(result)
})
.catch((error) => {
console.info(error);
})
Использованная литература:
Добро пожаловать @AbdiKaan
как у вас выглядит массив комментариев? и что содержит ваша входная переменная
result? пожалуйста, попробуйте опубликовать документ вместо изображения.