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

How to pass nested arrays from backend to frontend using Mongoose in Node.js?

这是我的 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 ref 发送 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

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

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 });
    });
});