我的项目中有2个馆藏:用户&主题
在主题收藏中,我有一个' createdBy'存储' _id'的字段用户。
*Sample object*
{
"_id": "SNj6C5fqMntSCaXdL",
"opic": "Best Gaming Laptop",
"tags": [
"games",
"technology",
"product"
],
"createdBy": "uzsMa4fZgmrrAD9ea",
"createdAt": "2016-03-06T21:25:38.672Z"
}
在用户集合中,我有字段' _id',' name'和' profile_picture_url'为每个用户。
{
"_id": "uzsMa4fZgmrrAD9ea",
"createdAt": "2016-03-03T03:48:05.787Z",
"name": "Karan Sarin",
"profile_picture_url": "https://pbs.twimg.com/pro2_normal.jpg"
}
我正在迭代主题并显示所有主题的列表,并希望显示个人资料图片和创建者的名称。
{{#each topics}}
<h2>{{topic_title}}<h2>
*Profile picture here* *User's name here*
{{/each}}
P.S。我不想将用户的图片和名称存储在主题集合中。只是想在需要时从用户的集合中访问它们。
答案 0 :(得分:0)
完成所需内容的最简单方法可能是将名称作为模式的一部分,在创建主题时将其存储到主题中。然后,您只需在模板中调用{{name}}即可。对于您的个人资料图片,您需要在模板中创建自定义变量。像{{getProfileImage userId}}之类的东西。然后在common.js这样的文件中编写模板助手,根据userId拉出配置文件图像。
答案 1 :(得分:0)
您可以实现一个辅助函数,该函数返回创建该主题的用户的文档。之后,您可以使用#with
表达式将数据上下文设置为与当前主题对应的用户文档。
例如:
Template.topicsList.helpers({
user: function () {
return Users.findOne({_id: this.createdBy});
}
});
<template name="topicsList">
{{#each topics}}
<h2>{{topic_title}}<h2>
{{#with user}}
<img src="{{profile_picture_url}}" alt="{{username}}">
<strong>{{name}}</strong>
{{/with}}
{{/each}}
</template>
请注意您还订阅了Users
集合中的所需文件。