我正在尝试将所有用户名发布到客户端,即使没有登录。为此,我在服务器上:
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,只是没有先检查管理员的角色。但似乎仍无法工作..)
我可能错过了一些傻事......
答案 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");
}
});
希望它有所帮助。