在Meteor模板中访问嵌套数组中的对象

时间:2016-02-21 20:14:15

标签: meteor spacebars

我有一个用户表,其结构如下所示,用于单个文档

{
    "profile" : {
        "name" : "new user",
        "gender" : ""
    },
    "followers" : [ 
        {
            "id" : "yQLrjsbAnKHW7Zoef",
            "name" : "vid vid"
        },
        {
            "id" : "bGLrjsbAnKHW7Zoef",
            "name" : "sid sid"
        }
    ]
}

我的助手功能是

Template.followers.helpers({
    followers: function () {
        return Meteor.users.find({_id: Meteor.userId()},{_id:0,followers:1, profile:1});
    }
});

现在我想将关注者的数据显示为:

name: Vid
name: Sid

基本上我想访问模板中的followers数组中的元素。 目前它的

{{#each followers}}
      {{ profile.name}}
      {{ followers}} 
{{/each}}

2 个答案:

答案 0 :(得分:0)

这是您的模板代码

{{#each followers}} {{ profile.name}} {{ followers}} {{/each}}

更正模板代码

{{#each followers}} 
  {{profile.name}} 
  {{#each this.followers}}
    {{name}}
  {{/each}}
{{/each}}

这将为您提供个人资料持有人的姓名以及该个人资料的关注者。

答案 1 :(得分:0)

修正了它。

问题是Meteor.users.find()仅返回有限的字段。首先,我尝试在users发布但不起作用的方法中使用字段说明符。以下是我的所作所为:

在服务器端,声明的新变量为:

UserProfiles : = Meteor.users;

添加了新的发布方法,其中我指定了我需要的字段: 在这里输入代码

Meteor.publish('UserProfiles', function () {
    return UserProfiles.find({},{
    fields : {
        'followers' : 1,
        'profile'   : 1,
        'createdAt' : 1
    }
});

});

在客户端添加以下行:

UserProfiles : = Meteor.users; 
Meteor.subscribe("UserProfiles");

然后在我的文件中,我发出了一个查询并返回:

users: function (){ 
    return UserProfiles.find(selector, {
       fields : {
           'followers' : 1,
            'profile'   : 1,
            'createdAt' : 1
       }
    });
}

内部模板代码:

{{#each users}}
     Follower of {{profile.name}}
     {{#each followers}}
          {{> follower}}
     {{/each}}
{{/each}}