Meteorjs显示参考文档字段

时间:2013-02-10 08:16:02

标签: mongodb meteor one-to-many

我有以下情况。有一个供应商和另一个邀请。现在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。我有什么选择?

1 个答案:

答案 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;
        });
    }
});