嗨,我需要用猫鼬创建RESTfull API并表示要获取酒店数据,这是一个问题。让我给你演示。 我需要创建此数据库模式。
{
"hotels" : [{
"name" : "Hotel Emperador",
"stars" : "3",
"images" :[....],
"price" : "1596",
},
...]
}`
我正在使用猫鼬,并且创建了此架构
const hotelSchema = new mongoose.Schema({
hotels:[{
id : Number,
name: String,
stars: String,
images: [String],
price: String
}]
});
const hotel = mongoose.model('hotel', hotelSchema);
我使用hotel.save()方法保存了此
const hotels = new hotel( {hotels:[{
"name" : "Hotel Emperador",
"stars" : "5",
"images" :['https://media-cdn.tripadvisor.com/media/photo-s/03/01/e7/a1/hotel-bolivar.jpg'],
"price" : "1596"
},...]
问题是上面的架构可以满足我对数据库的要求吗?在mongo Atlas上显示以下内容:
好吧,我的主要问题是因为当我运行此代码时,不要获取酒店数组
hotel.find({},function(err,result){
if(err){
console.log(err)
} else {
console.log(result)
}
我得到了这个(console.log(result),这很有意义,因为我在对象旅馆之前有一个数组。
[
{
_id: 5ee30d871e42964f0f3b3a10,
hotels: [ [Object], [Object], [Object], [Object], [Object] ],
__v: 0
}
]
我需要做一些事情来使我所有的嵌套对象都进入数组
hotel.findOne({ _id:"5ee30d871e42964f0f3b3a10"},function(err,result){
if(err){
console.log(err)
} else {
console.log(result)
}
在这里,我需要您的帮助,因为我找不到一种获取方法,在我的住宿范围内可以找到一家酒店吗?我需要用te糖进行消融的方法
{
"name" : "Hotel Emperador",
"stars" : "3",
"images" :[....],
"price" : "1596",
}
感谢您的帮助。
答案 0 :(得分:0)
问题是您将所有酒店对象存储在单个hotel
文档中。为了轻松实现所需的行为,可以按如下所示修改架构:
const HotelSchema = new mongoose.Schema({
name: String,
stars: String,
images: [String],
price: String
});
const Hotel = mongoose.model('hotel', HotelSchema);
要将您的酒店列表插入集合中:
await Hotel.create([{
"name" : "Hotel Emperador",
"stars" : "5",
"images" :['https://media-cdn.tripadvisor.com/media/photo-s/03/01/e7/a1/hotel-bolivar.jpg'],
"price" : "1596"
},
... // other hotel elements go here.
]);
最后,执行以下操作以从集合中检索单个酒店:
const hotel = await Hotel.findOne({});
我希望这会有所帮助。