Meteor #each块问题

时间:2015-12-08 07:46:58

标签: html mongodb meteor

我想使用每个块迭代用户集合的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()方法提高效率并使用每个块而不是静态搜索每个不同的属性?

1 个答案:

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

的情况下访问该属性