簡體   English   中英

Mongoose - 填充嵌套的對象數組不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM