列出meteor中的所有用户电子邮件

时间:2016-01-18 07:22:20

标签: javascript meteor

我想列出所有已注册用户的电子邮件和CompanyName,我有3个注册用户,但在我的情况下,它只显示当前用户的电子邮件和公司名称:

enter image description here enter image description here 这是.js文件,在clien中:

Template.homepage.helpers({
    user: function(){
        return Meteor.users.find();
    }
});

Template.homepage.helpers({
    userEmail: function(){
        return this.emails[0].address;
    }
});

这是html文件:

<div class="row text-center">
        {{ #each user }}
        <div class="col-sm-4">
            <div class="thumbnail">
                <img src="..." alt="">
                <p><strong>{{userEmail}}</strong></p>
                <p>{{profile.companyName}}</p>
            </div>
        </div>
        {{/each }}
    </div>

为什么它不向其他用户显示电子邮件和CompanyName?我的错误在哪里,你能帮我解决这个问题吗? 先感谢您!

1 个答案:

答案 0 :(得分:0)

我可以看到,你可以检查两件事。

首先,如果所有用户的文档都有相同的数据。在您的打印屏幕上,只有第一个用户有电子邮件。第二个甚至没有个人资料项目,第三个没有电子邮件。

如果没有问题并且所有用户都拥有数据库中的所有字段,那么您可能需要Publish来自服务器和Subscribe的数据到该内容。默认情况下(如果已删除insecureautopublish个软件包),Meteor仅发布您自己的用户数据,而不发布其他数据。

所以你需要添加server这样的东西:

 Meteor.publish("allusers", function () {
      if (!this.userId) {
           // this will make this available just to logged in users, and not for everyone.
           this.ready();
           return;
      }
      return Meteor.users.find({},{
          fields: {
              // here you can hide some of the data to be published. 
              //'0' means that that information will not be published to client.
              // you can also change to '1' instead of '0'. Then instead of hiding some
              // data, you would just show those listed.
              'services': 0,
              'createdAt': 0,
              'username': 0, //as you want emails, so you should hide this one.
              'profile.birthday': 0,
              'profile.activationcode': 0
          }
     });
});

最后,在客户端,您应该在您需要的页面上订阅该发布。我不知道您的应用程序以及将用于什么,但建议隐藏用户数据以防止公共访问。发布该内容应仅在安全的地方进行。这就是为什么我留下那些只为登录用户发布的代码。