发布所有Meteor.users并不起作用

时间:2015-01-15 05:01:24

标签: meteor

我正在尝试将所有用户名发布到客户端,即使没有登录。为此,我在服务器上:

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

在客户端:

Meteor.subscribe("users");

然而,当我尝试访问Meteor.users集合时,我什么都没找到。

(这与这里的问题基本相同:Listing of all users in the users collection not working first time with meteor js,只是没有先检查管理员的角色。但似乎仍无法工作..)

我可能错过了一些傻事......

2 个答案:

答案 0 :(得分:1)

我发现同样的问题,经过研究后我发现this包,我认为它可能对您有所帮助。

看看并希望它可以帮助你

<强>更新

首先将订阅移至/lib文件夹,只是为了确保它是meteor在启动时所做的第一件事,也在/lib文件夹上更改了这样的订阅。

Tracker.autorun(function() {
if(Meteor.isClient) {
  if (!Meteor.user()) {
    console.log("sorry you need to be logged in to subscribe this collection")
   }else{
    Meteor.subscribe('users');
   }
 } 
});

为了更好的安全性,我们只需在客户端登录时订阅用户集合

答案 1 :(得分:1)

此代码将所有用户名输出到客户端,即使未登录(在本例中为/ users页面):

服务器/ publications.js:

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

的客户机/ users_list.js:

Template.usersList.helpers({
    users: function () {
        return Meteor.users.find();
    }
});

的客户机/ users_list.html:

<template name="usersList">
      {{#each users}}
        {{username}}
      {{/each}}
</template>

lib / router.js(使用铁:路由器包):

Router.route('/users', {
    name: 'usersList',
    waitOn: function(){
        return Meteor.subscribe("userlist");
    }
});

希望它有所帮助。