【发布时间】:2013-08-15 21:30:48
【问题描述】:
我正在尝试将所有电子邮件和“角色”发布给“管理员”用户(使用 meteor-roles 陨石包),服务器知道它试图发布什么,但由于某种原因客户端没有接听数据。这是涉及的一段代码:
服务器代码:
Meteor.publish("directory", function() {
if(Roles.userIsInRole(this.userId, 'admin')) {
//next line shows that it outputs that there are 2 documents in this
console.log(Meteor.users.find({}, {fields:{emails:1, roles:1}}).count());
return Meteor.users.find({}, {fields:{emails:1, roles:1}});
} else {
return {};
}
}
客户代码:
Meteor.subscribe("directory");
Directory = new Meteor.Collection("directory");
//and then to simulate my use for this collection
console.log(Directory.find().count());
//which outputs 0
为什么客户没有得到文件? (而且我肯定使用角色为“admin”的帐户登录)
谢谢!
编辑和解决方案!
好的,所以我知道我做错了什么。我只需要在服务器上发布“目录”,并在客户端订阅。然后,所有用户数据都进入 Meteor.users 集合,我不应该定义自己的“Directory=new Meteor.Collection('directory')”。然后我可以通过 Meteor.users 访问数据。干杯!
服务器:使用与上面相同的代码
客户:
Meteor.subscribe("directory");
console.log(Meteor.users.find().count()); //outputs 2, yay!
【问题讨论】: