将Meteor用户发布到管理员

时间:2013-08-14 04:16:02

标签: meteor meteorite

我正在尝试将所有电子邮件和“角色”发布到“管理员”用户(使用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!

1 个答案:

答案 0 :(得分:0)

您的收藏可能应该在开头定义,以便客户知道在哪里写!

此外,您的Meteor.subscribe("directory");在加载应用时运行一次。你应该让它反应。

Directory = new Meteor.Collection("directory");

Deps.autorun(function(){
  Meteor.subscribe("directory");
});