Как добавить запись в массив внутри MongoDB

#node.js #mongodb #collections #async-await

Вопрос:

Ниже приведен мой код для добавления элемента в массив внутри объекта MongoDB. Я пытаюсь добавить отзыв о своем ресторане

Объект ресторана выглядит так:

 _id: ObjectID("61723c7378b6d3a5a02d908e")
name: "Hotel"
reviews: Array
 

reviews.js:

 const mongoCollections = require('../config/mongoCollections');
const restaurants = mongoCollections.restaurants;


module.exports = {

  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 insertInfo = await restaurantsCollection.updateOne( {_id : restaurantId},{$addToSet: {reviews: newReview}} )
    
    if (insertInfo.insertedCount === 0) throw 'Could not add review';
 
  },
 

index.js:

 const restaurantsData = require('./restaurants');
const reviewsData = require('./reviews')

module.exports = {
  restaurants: restaurantsData,
  reviews: reviewsData
};
 

seed.js: // для вызова функции

 const dbConnection = require('../config/mongoConnection');
const data = require('../data/');
const restaurants = data.restaurants;
const reviews = data.reviews;

const main = async () => {
    await reviews.created("61723c7378b6d3a5a02d908e", "random", "sam", 4, "25/2/2002", 
    "amazing");
      
}

main();
 

Я попытался использовать update вместо updateOne, но он показывает устаревшее предупреждение

Комментарии:

1. вы использовали передачу _id в качестве объекта для updateOne?

2. Не понимаю, что ты имеешь в виду

3. жду отзывов.создан(новый идентификатор объекта(«61723c7378b6d3a5a02d908e»), «случайный», «сэм», 4,»25/2/2002″, «удивительно»); Мне было интересно ,передаете ли вы идентификатор строки против идентификатора объекта, поэтому обновление не работает