在客户流星上获取多个用户数据

时间:2014-12-14 05:49:25

标签: javascript meteor

所以我希望能够在我的模板中使用所有用户_id和用户名#。我在server / publications.js中创建一个看起来像这样的出版物:

Meteor.publish('allUserData', function(){
   Meteor.users.find({}, { fields : {
       username : 1,
       _id : 1
   }});
});

但我不能为我的生活获取所有用户数据。我仍然只能获取当前登录用户的用户数据。我试过在不同的地方订阅; main.js,在我的路线中,以及我的集合js文件中。

我已经尝试订阅然后调用订阅回调中的数据,但这也没有用。

所以我想知道,我是否正确地走这条路?我在哪里订阅我的订阅?为什么它不像我希望的那样工作?我在学习流星的第2天,所以任何帮助都会受到赞赏。

2 个答案:

答案 0 :(得分:1)

您错过了return

Meteor.publish('allUserData', function(){
  return Meteor.users.find({}, {fields : {username : 1}});
});

另请注意,您无需在_id中指定fields,因为它会自动添加。

答案 1 :(得分:1)

您没有在发布功能中返回任何光标。当你这样做时,Meteor假设你正在使用低级别添加/更改/删除的界面,这不是你在此之后所做的。更改函数以从find()返回光标:

Meteor.publish('allUserData', function() {
    return Meteor.users.find({}, { fields : { username : 1, _id : 1 }});
});

_id: 1不是必需的btw) 然后在您的客户端订阅适当的位置(取决于哪里),例如在自动运行:

Tracker.autorun(function () {
    Meteor.subscribe("allUserData");
});