2016-05-03 5 views
0

私はMeteorJSプロジェクトを持っており、id paramが定義されているかどうかに基づいて、特定のユーザーセットを公開したいと考えています。 idのparamに値があると、完全にユーザーのリストを取得しますが、nullの場合は何も返しません。私はalanning:rolesパッケージをユーザーの役割に使用しており、まったく同じクエリはmeteor mongoで正常に動作します。MeteorJS条件付きパブ

注:私はユーザーパブと制限フィールドの意味を理解しています。 idがnullの場合、パブが何も返さない理由を理解したいだけです。

// 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

コードハイライトが必要な場合は、クイックヒントとして、javascriptタグを質問に追加できます。 – Billybobbonnet

答えて

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 
    });  
} 
}); 
+0

ありがとうございますが、私は具体的には、両方のロールに属するユーザーが返されるように要求します。 –

+0

あなたのリクエストに合わせて答えを編集しました。 – Billybobbonnet

+0

動作しません。ターミナルでこのエラーが発生する - 'sub userAccess IDからの例外FoLB7MCN6tN5EvhD2 TypeError:オブジェクト[オブジェクトオブジェクト]に 'filter'メソッドがありません –

0

元のコードは機能します。条件は間違った場所にあったため、ユーザーを返さないフロントエンドに問題がありました。