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

如何使用Node.js中的Mongoose将嵌套数组从后端传递到前端?,node.js,mongodb,mongoose,mongoose-populate,Node.js,Mongodb,Mongoose,Mongoose Populate,这是我的MongoDB模式: var partnerSchema = new mongoose.Schema({ name: String, products: [ { type: mongoose.Schema.Types.ObjectId, ref: 'Product' }] }); var productSchema = new mongoose.Schema({ name: Stri

这是我的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)
}
我想将所有文档(
合作伙伴
产品
活动
)作为一个对象发送到我的视图

我知道如何使用
产品发送
合作伙伴
。例如:

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

这就是问题所在。如何将一个对象作为文档传递给
合作伙伴
产品
活动
。因为目前该对象中只有
合作伙伴
产品

您可以使用此模式填充嵌套的活动模型:

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

您可以使用此模式填充嵌套的活动模型:

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

试试这个:
.populate('products','products.campaign')
(可能不起作用,但我认为值得一试。试试这个:
.populate('products','products.campaign')
(可能不起作用,但我认为值得一试。我不知道为什么,但
.exec
不能正常工作。错误:
预期“;”
我错过了什么吗?@DiPix抱歉,我遗漏了回调函数。现在应该可以了。谢谢。现在我想知道如何删除对象。如果可以,请查看以下帖子:我不知道为什么,但
.exec
无法正常工作。错误:
应为“;”
我错过了什么吗?@DiPix抱歉,我遗漏了回调函数。它现在应该可以工作了。谢谢。现在我想知道如何删除对象。如果可以,请查看此帖子: