![](/img/trans.png)
[英]populating a document nested in array of objects in Mongoose don't work
[英]Mongoose - Populating a nested array of objects not working
我有一個名為 Orders 的集合,其中包含此架構:
const mongoose = require('mongoose');
const orderSchema = new mongoose.Schema({
user: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User',
required: true
},
restaurant: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Restaurant',
required: true
},
dishes: [
{
dish: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Dish'
},
amount: Number
}
],
price: {
type: Number,
required: true
},
comment: {
type: String,
required: false
},
status: {
type: String,
enum: ['PROCESSING', 'CANCELLED', 'COMPLETED', 'ERROR'],
default: 'PROCESSING'
},
timestamp: {
type: Date,
default: Date.now
}
})
module.exports = mongoose.model('Order', orderSchema);
在我的路由器里面,我有這個代碼:
let orders = await Order.find({restaurant: restaurantID, status:'PROCESSING'}).populate('dishes._id').exec()
Order.find 不會拋出異常,但它也不起作用。 我希望 res.body 看起來像這樣:
{
"_id": "objectID",
"user": "objectID",
"restaurant": "objectID",
"dishes": [
{
"amount": number,
"dish": {
//dish object
}
},
...
],
//other order properties
},
...
]
但由於某種原因, dishes
數組看起來像這樣:
"dishes": [
{
"amount": 1,
"_id": "6184e848e6d1974a0569783d"
}
],
我究竟做錯了什么?
我知道如果populate()
工作, res.body dishes
數組將不會有一個名為“dish”的屬性,而是有一個名為_id
的屬性,它將包含盤對象,但是一旦populate()
工作,這應該不難改變。
編輯:
我意識到,我的createOrder路線可能是問題的一部分,因為它忽略了我的架構,並使用一個id
為的objectID,而不是財產dish
。 我保存到數據庫的數組包含一個名為id
的屬性,用於 id 而不是dish
,但是當我嘗試將這樣的內容保存到我的數據庫時,我的架構不應該拋出異常嗎?
乍一看,我認為問題可能是您有語法問題。 嘗試
.populate('dishes').exec()
代替
.populate('dishes._id').exec()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.