2016-06-23 5 views
1

Это моя MongoDB схема:Как передать вложенные массивы из бэкэнда в интерфейс с использованием Mongoose в Node.js?

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) на мой взгляд, как один объект.

Я знаю, как отправить partner с product ref. Например:

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.

+0

Попробуйте это: '.populate («продукты»,«products.campaign»)' (вероятно, не будут работать, но стоит попробовать Я думаю, что – libik

ответ

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

Я не знаю почему, но '.exec' работает неправильно. Ошибка:' Ожидаемый ';' 'http://prntscr.com/bk2aun Я что-то пропустил? – DiPix

+0

@DiPix Извинения, я оставил – chridam

+0

Спасибо. Теперь я задаюсь вопросом, как удалить объект. Если вы можете, тогда отметьте это сообщение: http://stackoverflow.com/questions/38011068/how-to-remove-object записанный в по принимать клиент-ссылку-на-мангустов-узла-JS – DiPix