我有下面的场景。有一个收藏供应商和另一个受邀供应商。now invited.supplier=supplier.\u id(语法可能错误)invited collection以一对多的方式引用供应商。
在我的html中,我有
<template name="mytemplate">
{{#each invited_list}}
{{supplier}}
{{f1}}
{{f2}}
{{/each}}
</template>
我有一个助手功能
Template.mytemplate.helpers({
invited_list : function(){
return Invited.find({"something"});
}
});
我想在我的邀请列表中显示{suppliers.name},而不是{supplier}中的{id。我有什么选择?
最佳答案
可以创建解析器函数,例如:
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;
});
}
});
关于mongodb - Meteorjs显示引用文档字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14795924/