如何在 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 }}
问题来了。如何使用 partner
、product
和 campaign
将一个对象作为文档传递。因为目前我在那个对象中只有 partner
和 product
。
您可以使用此模式填充嵌套广告系列模型:
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 });
});
});
这是我的 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 }}
问题来了。如何使用 partner
、product
和 campaign
将一个对象作为文档传递。因为目前我在那个对象中只有 partner
和 product
。
您可以使用此模式填充嵌套广告系列模型:
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 });
});
});