我有下面的场景。有一个收藏供应商和另一个受邀供应商。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/

10-12 18:08