我有一个MeteorJS项目,我想根据是否定义id
参数来发布一组特定用户。当id
param有一个值时,它会完美地获得用户列表,但是当它为null时,它什么都不返回。我使用alanning:roles
包用于用户角色,完全相同的查询在meteor mongo
中正常工作。
注意:我理解用户pub和限制字段的含义。我只想了解为什么当id
为空时,pub没有返回任何内容。
// Server
Meteor.publish('userAccess', function(id) {
console.log(id); // null or array
if (!id || id == null) {
return Meteor.users.find({
'roles': {
$in: ['admin', 'team']
}
});
} else {
return Meteor.users.find({
_id: id
});
}
});
答案 0 :(得分:0)
您应该使用alanning:roles
方法并发布由它返回的ID。
// Server
Meteor.publish('userAccess', function(id) {
console.log(id); // null or array
if (!id || id == null) {
var Admins = Roles.getUsersInRole (['admin'])
var Teams = Roles.getUsersInRole (['team'])
// we intersect both array
var adminsAndTeam = Admins.filter(function(n) {
return Teams.indexOf(n) != -1;
});
return Meteor.users.find({
_id: {
$in: adminsAndTeam
}
});
} else {
return Meteor.users.find({
_id: id
});
}
});
答案 1 :(得分:0)
原始代码确实有效。问题出在前端,条件在错误的位置,因此没有返回用户。