MeteorJS条件酒吧

时间:2016-05-03 12:40:41

标签: mongodb meteor

我有一个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
    });     
}
});

2 个答案:

答案 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)

原始代码确实有效。问题出在前端,条件在错误的位置,因此没有返回用户。