Meteor帐户密码,显示所有用户的电子邮件

时间:2016-11-28 00:44:28

标签: meteor meteor-accounts

我是Meteor的新手。出于学习目的,我只想列出所有用户的电子邮件。但只能看到登录用户的电子邮件。

注意:

  • 我正在使用Meteor 1.4.2
  • 我在开发环境中。所以我 没有删除'不安全'或'自动发布'。我知道这很糟糕 实践。但这只是为了快速启动。

我的模板助手看起来像:

Template.usersList.helpers({
    users () {
        return Meteor.users.find({}, {fields: {'username': 1, emails:1}});
    },
    email(){
        if(typeof this.emails === 'undefined'){
            console.error(this.emails, "Unauthorized Attempt");
            return "--NaN--";
        } else {
            return this.emails[0].address;
        }
    }
});

Blaze模板:

<template name="usersList">
    This is Users List
    <ul>
        {{#each users}}
        <li>{{username}} | {{email}}</li>
        {{/each}}
    </ul>
</template>

结果,它显示所有用户的用户名。并且只显示登录用户的电子邮件。对于其他用户,“电子邮件”数组将返回为未定义。

jessica | dad@email.com
Waqas | --NaN--
Bob | --NaN--

在上面的结果中,jessica已登录用户。看不到其他用户的电子邮件。

有人可以告诉我如何为所有用户显示电子邮件。或者请指出我正确的方向?

谢谢, 艾哈迈德

2 个答案:

答案 0 :(得分:2)

您可以在服务器上添加:

Meteor.publish("userData", function () {
  return Meteor.users.find();
});

这在客户端:

Meteor.subscribe("userData");

有关详细信息,请参阅documentation

请注意,您可能希望限制最终实际发布给客户的内容。但我认为你明白了。 Meteor.users只是一个集合,因此您可以像从其他任何集合中一样发布它。

答案 1 :(得分:0)

刚发现我不得不使用pub / sub。所以,以下为我工作:

//在服务器

Meteor.publish("userList", function () {
       return Meteor.users.find({}, {fields: {emails: 1}});
});

//在客户端

Meteor.subscribe("userList");