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

Access object in nested array in Meteor templates

我有用户table,其单个文档的结构如下

{
    "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}}

这是您的模板代码

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

正确的模板代码

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

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

已修复。

问题是 Meteor.users.find() returns 只有有限的字段。首先,我尝试在发布 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}}