我有2个集合:TestPlans
和Users
TestPlans
有一个名为“assigned”的数组,其中包含user _ids
。
Users
有一个avatarUrl
字符串
我需要遍历每个testPlan
以及每个assignedUser
并为该用户抓取avatarUrl
:
像{{#each testPlan}} {{#each assignedUser}} {{avatarUrl}}
testPlans
的助手我有:
testPlan: function() {
var testPlans = TestPlans.find({}, { sort: {createdAt: -1}}).fetch();
return testPlans;
}
assignedUser
的助手我有:
assignedUser: function(){
var assignedUsers = TestPlans.findOne({_id: this._id}).assigned;
return assignedUsers;
}
我不确定如何为每个avatarUrl
调用assignedUser
。
查询将是
Users.findOne({_id: thisUserId}).profile.avatarUrl;
只是不确定如何准确传递用户ID。
答案 0 :(得分:0)
如果assignedUsers是userIds数组,在这种情况下可能是最好的实现..
//html
{{#each testPlan}}
{{#each assignedUser}}
{{profile.avatarUrl}}
//you can do this because {{this}} is the user object
//{{profile.avatarUrl}} is the same as {{this.profile.avatarUrl}}
{{/each}}
{{/each}}
//js
assignedUser: function(){
var assignedUsers = TestPlans.findOne({_id: this._id}).assigned;
var usersCursor = Users.find({_id:{$in:assignedUsers}}});
return usersCursor;
}
答案 1 :(得分:0)
我会更改您的assignedUser模板助手以接受用户ID参数,然后返回头像网址
assignedUser: function(userId) {
return Users.findOne({_id: userId}).profile.avatarUrl
};
然后你的模板代码看起来像这样。
{{#each tp in testPlan}}
{{#each au in tp.assignedUser}}
{{avatarUrl au._id}}
{{/each}}
{{/each}}
另外,我喜欢使用each...in
而不仅仅是each
,因为它更明确了实际发生的事情