Не удается вернуть значения свойств объекта в NodeJS

#node.js #mongodb #object

Вопрос:

Я хочу вернуть значение свойства объекта, но средство доступа к свойству dot не работает. Ниже приведена моя функция:

 async abc(reviewId){
    
    let b = this.get(reviewId) 
    return b
  }
 

Ниже приведена функция get, вызывающая abc() :

 async get(reviewId) {
    const restaurantsCollection = await restaurants();
    reviewId = ObjectId(reviewId)
  
    const r = await restaurantsCollection.findOne(
      { reviews: { $elemMatch: { _id : reviewId } } },
      {"projection" : { "reviews.$": true }}
    )
  
    return r.reviews[0]

    
  }
 

Я могу вернуть b:

 {
  _id: new ObjectId("617a07afeae615cff755fec7"),
  title: 'tkl',
  reviewer: 'sm',
  rating: 1,
  dateOfReview: '15/1/2002',
  review: ' ruh'
}
 

Когда я возвращаю b.рейтинг, он возвращается неопределенным:

 async abc(reviewId){

    let b = this.get(reviewId) 
    return b.rating
  }
 

Что я упускаю?

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

1. Ссылка на набор данных, которые вы получаете от mongodb, была бы полезна, но вы пробовали JSON.stringify(JSON.parse(b)), прежде чем возвращать b.рейтинг?

2. Я получаю эту ошибку, когда добавляю это: Синтаксическая ошибка: Неожиданный токен o в JSON в позиции 1, я думаю, что мне нужно использовать findOne, чтобы получить весь объект, а затем получить рейтинг, спасибо за ваш комментарий

Ответ №1:

Мне пришлось использовать ожидание в своем коде, так как обещание ждало, и поэтому b.рейтинги не были определены.

 async abc(reviewId){

    let b = await this.get(reviewId) 
    return b.rating
  }