как заполнить вложенный массив ref?мангуста - PullRequest
0 голосов
/ 20 сентября 2018

Я нашел этот пост, который довольно близок к моей необходимости, но почему-то я все еще не могу заставить его работать, хотя

Заполнить вложенный массив в mongoose

Этонемного сложно объяснить, о каком вложенном рефере я говорю.Я только начинаю с кода

У меня есть Схема продуктов

const ProductSchema = new Schema(Object.assign({
    name: {type: String};
});

схема заказа

const OrderSchema = new Schema(Object.assign({
    products: [ {
        product: { type: Schema.Types.ObjectId, ref: 'Products' },
        amount: { type: Number },
        total: { type: Number },
    } ],
});

Я пытался сделать

    const order = await Orders.findOne({
        _id: 'orderId39843984203'
    }).populate({
        path: 'products',
        populate: {
            path: 'product'
        }
    });

Я попробовал что-то подобное, и несколько других способов, таких как path: products.product или path: products.product._id и что-то похожее

, но все, что я могу получить, это _id, это не заполняет все это.

Может кто-нибудь дать мне руку или совет, как это будет работать?

Заранее спасибо

РЕДАКТИРОВАТЬ: так выглядит документ в db для orderSchema

{
    "_id": {
        "$oid": "5ba2e2af52f2ff3f4226015c"
    },
    "products": [
        {
            "_id": {
                "$oid": "5ba2e2ac52f22f3f4226015e"
            },
            "amount": 4,
            "total": 2940
        },
        {
            "_id": {
                "$oid": "5ba2e2ac52f2ff3f5226015d"
            },
            "amount": 1,
            "total": 840
        }
    ],
    "createdAt": {
        "$date": "2018-09-19T23:58:36.339Z"
    },
    "updatedAt": {
        "$date": "2018-09-19T23:58:36.505Z"
    },
    "__v": 0
}

Ответы [ 2 ]

0 голосов
/ 01 мая 2019
.populate({ path: 'nested', populate: { path: 'deepNested' }});

, где nested - ссылка первого уровня, а deepnested - ссылка первого уровня.

0 голосов
/ 20 сентября 2018

Вы должны быть в состоянии сделать это с помощью:

const order = await Orders.findOne({
    _id: 'orderId39843984203'
}).populate('products.product')
.exec((error, doc) => doc);

Согласно документам для заполнения

...