#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
}