我想使用每个块迭代用户集合的Mongo查询。
我有以下html模板,它应该加载来自users集合中的配置文件对象的不同数据片段。
为了澄清,用户Collection具有服务,状态和配置文件对象
{{#each profile}}
<div class="profileUser oneDiv">
<div class="profileUserLeft">
<div class="profileUserImage">
<div class="spin"> {{> spinner}} </div>
<img src="{{profile.picturelrg}}" class="profileUserImg">
</div>
<div class="profileUserGraph">
<label for="myChart"><b>Meetup Graph</b>
<br>
<span class="profileMonth"> {{profile.month}} </span>
<br>
<canvas id="myChart"></canvas>
</label>
</div>
</div>
<div class="profileUserRight">
<div class="profileUserName">
<ul>
<li><h1>{{profile.name}}</h1></li>
<li>
<div class="circle" style="background-color: {{online.color}}"></div>
</li>
</ul>
</div>
</div>
</div>
{{/each}}
这是我的助手设置查询
profile: function() {
return Meteor.users.find({
_id: id
});
}
目前该页面没有数据加载。
当我静态查询属性时,它可以正常工作。这样就完成了。
profimg: function() {
return Meteor.users.find({
_id: id
}).fetch()[0].profile.picturelrg;
}
如何使用fetch()方法提高效率并使用每个块而不是静态搜索每个不同的属性?
答案 0 :(得分:1)
each
的{{1}}将数组作为参数循环,而Blaze
方法返回MongoDB的find
。你需要做的是Cursor
Cursor返回数组
fetch
但是,你的逻辑不正确。您正在查找与输入ID匹配的配置文件,因此该功能应为
profile: function() {
return Meteor.users.find({
_id: id
}).fetch();
}
然后您可以在没有profile: function() {
return Meteor.users.findOne({
_id: id
});
}
循环