我试图发布所有的电子邮件和“角色”给“管理员”用户(使用流星角色陨石包),服务器知道它想发布什么,但出于某种原因,客户端没有收集数据。下面是所涉及的代码:
服务器代码:
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(‘目录’)“。然后,我可以通过Meteor.users访问数据。干杯!
服务器:使用与上面相同的代码
客户端:
Meteor.subscribe("directory");
console.log(Meteor.users.find().count()); //outputs 2, yay!
发布于 2013-08-14 07:48:45
您的集合可能应该在开始时定义,以便客户端知道在哪里编写!
另外,在加载应用程序时,您的Meteor.subscribe("directory");
只运行一次。你应该做出反应。
Directory = new Meteor.Collection("directory");
Deps.autorun(function(){
Meteor.subscribe("directory");
});
https://stackoverflow.com/questions/18223106
复制相似问题