我有一个模板,我试图在被叫userList中显示所有用户。
//服务器
Meteor.publish("userList", function() {
var user = Meteor.users.findOne({
_id: this.userId
});
if (Roles.userIsInRole(user, ["admin"])) {
return Meteor.users.find({}, {
fields: {
profile_name: 1,
emails: 1,
roles: 1
}
});
}
this.stop();
return;
});
提前感谢您的帮助!
答案 0 :(得分:13)
如果您想要显示您可以在publish.js文件中尝试的所有用户:
Meteor.publish('userList', function (){
return Meteor.users.find({});
});
在您的路由器中,您可以使用此
Router.route('/users', {
name: 'usersTemplate',
waitOn: function() {
return Meteor.subscribe('userList');
},
data: function() {
return Meteor.users.find({});
}
});
下一步是在模板中迭代您的数据。
如果您不想在路由器中订阅,您可以在模板级别订阅,请阅读本文了解更多详情。
https://www.discovermeteor.com/blog/template-level-subscriptions/
问候。
答案 1 :(得分:6)
这应该有效!
//在服务器
中 Meteor.publish("userList", function () {
return Meteor.users.find({}, {fields: {emails: 1, profile: 1}});
});
//在客户端
Meteor.subscribe("userList");
答案 2 :(得分:0)
这应该有用。
客户端:
UserListCtrl = RouterController.extend({
template: 'UserList',
subscriptions: function () {
return Meteor.subscribe('users.list', { summary: true });
},
data: function () {
return Meteor.users.find({});
}
});
服务器:
Meteor.publish('users.list', function (options) {
check(arguments, Match.Any);
var criteria = {}, projection= {};
if(options.summary){
_.extend(projection, {fields: {emails: 1, profile: 1}});
}
return Meteor.users.find(criteria, projection);
});