我在server / publications.js中有以下内容......
Meteor.publish("users", function(){
return Meteor.users.find({}, {fields: {profile: 1}});
});
......在我的铁路由器路线......
Router.route('/', function() {
this.layout('ConfLayout');
this.render('UserList', {
waitOn: function () {
return Meteor.subscribe("users");
},
data: function () {
return {
users: function () {
return Meteor.users.find();
}
};
}
});
});
...然后在我的模板中......
<template name="UserList">
<h1>Users</h1>
<ul>
{{#each users}}
<li>
{{#linkTo route='user.show'}}
<div>
{{profile.lastName}}, {{profile.firstName}}
</div>
{{/linkTo}}
</li>
{{/each}}
</ul>
</template>
...除了客户端上唯一的用户是当前登录的用户外,它还有效。我正在尝试获取管理员的所有用户列表(暂时不要担心管理员部分)。
奇怪的是,我将一个console.log语句添加到它永远不会被记录的发布函数中。但是,同一文件中的所有其他出版物似乎都能正常工作。此外,如果我启用自动发布,则所有用户都会按预期显示。
我在这里错过了什么?基于我可以发现的所有内容,似乎发布特定字段应该适用于显示客户端中的所有用户,但看起来Meteor几乎忽略了Meteor.users上的任何出版物。我正在使用Meteor 1.1.0.3。
任何想法或帮助表示赞赏!
TIA
答案 0 :(得分:0)
好的......不完全确定为什么,但我怀疑我可能在某处或其他地方错过了“这个”,但是如果我改变路线不使用函数作为第二个参数并且只是传递选项然后离开其他一切都完全相同,它有效......
Router.route('/', {
waitOn: function () {
return Meteor.subscribe('users');
},
data: function () {
return {
users: function () {
return Meteor.users.find();
}
};
},
template: 'UserList',
layoutTemplate: 'ConfLayout'
});