我想列出所有已注册用户的电子邮件和CompanyName,我有3个注册用户,但在我的情况下,它只显示当前用户的电子邮件和公司名称:
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?我的错误在哪里,你能帮我解决这个问题吗? 先感谢您!
答案 0 :(得分:0)
我可以看到,你可以检查两件事。
首先,如果所有用户的文档都有相同的数据。在您的打印屏幕上,只有第一个用户有电子邮件。第二个甚至没有个人资料项目,第三个没有电子邮件。
如果没有问题并且所有用户都拥有数据库中的所有字段,那么您可能需要Publish
来自服务器和Subscribe
的数据到该内容。默认情况下(如果已删除insecure
和autopublish
个软件包),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
}
});
});
最后,在客户端,您应该在您需要的页面上订阅该发布。我不知道您的应用程序以及将用于什么,但建议隐藏用户数据以防止公共访问。发布该内容应仅在安全的地方进行。这就是为什么我留下那些只为登录用户发布的代码。