2016-06-23 43 views
1

這是我的MongoDB的架構:如何在Node.js中使用Mongoose從後端傳遞嵌套數組到前端?

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)發送到我的視圖作爲一個對象。

我知道如何發送partnerproduct 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 }} 

這裏是問題。如何將一個對象作爲partnerproductcampaign的文檔傳遞給我。因爲目前我在該對象中只有partnerproduct

+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'不能正常工作。錯誤:'Expected';'http://prntscr.com/bk2aun我錯過了什麼嗎? – DiPix

+0

@DiPix道歉,我已經離開了出來的回調函數,它現在應該工作 – chridam

+0

謝謝,現在我想知道如何刪除對象,如果可以,然後檢查這個帖子:http://stackoverflow.com/questions/38011068/how-to-remove-object -taking-到賬戶引用功能於貓鼬節點-JS – DiPix

相關問題