如何在Node.js中使用Mongoose将嵌套数组从后端传递到前端?

问题描述 投票:1回答:1

这是我的MongoDB架构:

var partnerSchema = new mongoose.Schema({
    name: String,
    products: [
        {
            type: mongoose.Schema.Types.ObjectId,
            ref: 'Product'
        }]
});

var productSchema = new mongoose.Schema({
    name: String,
    campaign: [
        {
            type: mongoose.Schema.Types.ObjectId,
            ref: 'Campaign'
        }
    ]
});

var campaignSchema = new mongoose.Schema({
    name: String,
});


module.exports = {
    Partner: mongoose.model('Partner', partnerSchema),
    Product: mongoose.model('Product', productSchema),
    Campaign: mongoose.model('Campaign', campaignSchema)
}

我想将所有文档( partner > product > campaign )作为一个对象发送到我的视图。

我知道如何与product参考发送partner 。 例如:

var campSchema = require('../model/camp-schema');
router.get('/partner-list', function (req, res) {
    campSchema.Partner.find({}, function (err, partnerList) {
        if (err) throw err;
        res.json({ partnerList: partnerList });
    }).populate('products');
});

我可以通过这种方式轻松地在视图中迭代:

   li(ng-repeat="product in partner.products")
       a(href="#") {{ product.name }}

这是问题所在。 如何将一个对象作为包含partnerproductcampaign的文档传递。 因为目前我只有该对象的partnerproduct

node.js mongodb mongoose mongoose-populate
1个回答
0
投票

您可以使用此模式填充嵌套的广告系列模型:

var campSchema = require('../model/camp-schema');
router.get('/partner-list', function (req, res) {
    campSchema.Partner
        .find({})
        .populate({
            path: 'products',
            model: 'Product',
            populate: {
                path: 'campaign',
                model: 'Campaign'
            }
    }).exec(function(err, partnerList) {
        if (err) throw err;
        res.json({ partnerList: partnerList });
    });
});
© www.soinside.com 2019 - 2024. All rights reserved.