2016-08-05 59 views
0

這裏在使用_.map是我的助手,從兩個集合流星,加入收藏

Template.Lirescategorie.helpers({ 
    scategories: function() { 
     var cursor = Scategories.find(); 
     var data = []; 
     cursor.forEach(function(somewhat) { 
      var categories = Categories.findOne({_id : somewhat.categorieID}, {categorie:1}); 
      data.push({cat : categories.categorie, scat : somewhat.scategorie }); 
     }); 
     return data; 
    } 

}); 

這裏是我的收藏diplay數據

categorie : 
{ 
    "_id": "LBKZQfZZSf4DRdeXo", 
    "categorie": "Citoyenneté" 
} 
scategorie 
{ 
    "_id": "cNHYpAEvC9ffjWkf5", 
    "categorieID": "LBKZQfZZSf4DRdeXo", 
    "scategorie": "Etat-Civil" 
} 

我敢肯定,我的助手代碼不是最佳的。我想通過使用_.map或類似的東西,我可以減少代碼。 因爲我不是很熟悉它,我正在尋找這方面的幫助。

+0

什麼是你的問題? – TyrionGraphiste

+0

我想使用_.map,或類似forEach的插圖 –

回答

0

歡迎來到客戶端加入。您可以使用.map()獲得的categorieID是清單,並與$in:做第二次發現一氣呵成:

var cursor = Scategories.find(); 
var arrayOfCategorieIDs = cursor.map(function(s){return s.categorieId}); 
var categories = Categories.find({_id : {$in: arrayOfCategorieIDs}}); 

然後:

var sCategories = cursor.map(function(s){return s.scategorie}); // array of scategorie names 
var categoryNames = categories.map(function(c){return s.categorie}); // array of categorie names 

Then assemble these two arrays of strings into the array of objects you're looking for. 

但有一個客戶端加入一個簡單得多的方式:只需遍歷一個遊標並在幫助程序中查找相關集合。例如:

HTML:

{{#each sCategories}} 
    {{sCategorie}} 
    {{categorie}} 
{{/each}} 

JS:

Lirescategorie.helpers({ 
    sCategories:(){ 
    return Scategories.find(); 
    }, 
    categorie:(){ 
    return Categories.findOne(this.categorieID).categorie; 
    } 
});