【发布时间】:2021-12-09 13:20:21
【问题描述】:
下面是我从餐厅对象中的评论数组中查找评论并在 _id 匹配时显示评论的代码:
餐厅对象:
{
_id: new ObjectId("61723c7378b6d3a5a02d908e"),
name: 'The Blue Hotel',
location: 'Noon city, New York',
phoneNumber: '122-536-7890',
website: 'http://www.bluehotel.com',
priceRange: '$$$',
cuisines: [ 'Mexican', 'Italian' ],
overallRating: 0,
serviceOptions: { dineIn: true, takeOut: true, delivery: true },
reviews: [
{
_id: new ObjectId("61736a0f65b9931b9e428790"),
title: 'dom',
reviewer: 'firuu',
rating: 4,
dateOfReview: '25/1/2002',
review: ' bruh'
}
]
}
async get(reviewId) {
const restaurantsCollection = await restaurants();
reviewId = ObjectId(reviewId)
const r = await restaurantsCollection.find({reviews: {$elemMatch: {_id: reviewId}}})
return r
},
index.js:
a = await reviews.get("61736a0f65b9931b9e428790")
console.log(a)
我得到的输出是:
FindCursor {
_events: [Object: null prototype] {},
_eventsCount: 0,
_maxListeners: undefined,
[Symbol(kCapture)]: false,
[Symbol(topology)]: Topology {
更多,因为我在某处缺少一些功能。
如何根据评论 ID 作为输入获得返回评论的输出?
【问题讨论】:
-
什么等待餐厅();回归?
-
我想,您的查询不正确?你的意思是
findone而不是find?其中findone返回实际值,find返回FindCursor有一个方法叫做toArray()?试试r.toArray() -
@Ayzrian,也许
await restaurants();会返回一个集合。 -
@Ayzrian restaurant() 返回一个集合
-
@Nur 它说 r.toArray 不是函数
标签: node.js arrays mongodb async-await objectid