以下是我从两个集合中显示数据的助手
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;
}
});
这是我的收藏品
categorie :
{
"_id": "LBKZQfZZSf4DRdeXo",
"categorie": "Citoyenneté"
}
scategorie
{
"_id": "cNHYpAEvC9ffjWkf5",
"categorieID": "LBKZQfZZSf4DRdeXo",
"scategorie": "Etat-Civil"
}
我很确定我的助手代码不是最佳的。我认为通过使用_.map或类似的东西,我可以减少代码。 由于我对它并不熟悉,我正在寻求帮助。
答案 0 :(得分:0)
欢迎使用客户端连接。您可以使用UIImageView
获取.map()
的列表,并使用categorieID
一次性完成第二次查找:
$in:
然后:
var cursor = Scategories.find();
var arrayOfCategorieIDs = cursor.map(function(s){return s.categorieId});
var categories = Categories.find({_id : {$in: arrayOfCategorieIDs}});
但是对于客户端连接来说,这是一个更简单的模式:只需迭代一个游标并在帮助程序中查找相关集合。例如:
HTML:
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.
JS:
{{#each sCategories}}
{{sCategorie}}
{{categorie}}
{{/each}}