#node.js #arrays #mongodb #push
Вопрос:
Ниже приведен мой код для добавления отзывов в массив отзывов в объекте ресторан
async created (restaurantId, title, reviewer, rating, dateOfReview, review) { const restaurantsCollection = await restaurants(); let newReview = { restaurantId : restaurantId, title : title, reviewer : reviewer, rating : rating, dateOfReview : dateOfReview, review : review }; const restaurant = await restaurantsCollection.findOne({ _id: restaurantId }); restaurant.reviews.push(newReview); }
Это не добавляет никаких данных в базу данных, как это правильно сделать?
Ответ №1:
Если я правильно понял, вам нужно позвонить в обновление после того, как вы добавите это в свои отзывы.
await restaurantsCollection.updateOne({restaurantId : newReview.restaurantId},{ $set: {reviews: restaurant.reviews} }
или вы можете легко нажать на него вот так, и вам не нужно будет выполнять запрос findOne:
await restaurantsCollection.updateOne({restaurantId : newReview.restaurantId},{ $push: {reviews: newReview.review} }
Комментарии:
1. спасибо, я не знал о толчке в $
Ответ №2:
Не забудьте сохранить отзыв после того, как переместите его в массив.
await restaurant.save()