我有以下情况。有一个供应商和另一个邀请。现在Invited.supplier = Supplier._id(语法可能有误)邀请集合是指一对多方式的供应商。
在我的HTML中,我有
<template name="mytemplate">
{{#each invited_list}}
{{supplier}}
{{f1}}
{{f2}}
{{/each}}
</template>
我有辅助功能
Template.mytemplate.helpers({
invited_list : function(){
return Invited.find({"something"});
}
});
我想在welcome_list中的{{supplier}}中显示{{Suppliers.name}}而不是_id。我有什么选择?
答案 0 :(得分:1)
您可以创建一个解析器功能,例如:
Template.mytemplate.helpers({
invited_list : function(){
return resolveSupplierToNames(Invited.find({"something"}).fetch());
}
});
function resolveSupplierToNames(invitedList) {
for (var i=0; i<invitedList.length; i++) {
invitedList[i].supplier = Suppliers.findOne({_id: invitedList[i].supplier}).name;
}
return invitedList;
}
mongodb通常有两种选择,一种是上面的(手动)。第二个是使用DBRefs。但是我不确定meteor是否完全支持DBRefs。正如mongodb文档中所建议的那样,手动执行它并没有错。
<强>更新强>
Meteor已经引入了转换功能,你可以做类似的事情:
Template.mytemplate.helpers({
invited_list : function(){
return Invited.find({"something"},{transform:function(doc) {
doc.supplier_name = Suppliers.findOne({_id: doc.supplier_id}).name;
return doc;
});
}
});