2016-04-03 4 views
0

私は同じ組織に属しているdb内のすべてのユーザーを表示するページを作成しようとしています。ログインしたユーザーと同じ組織に属するMeteorユーザーを公開しますか?

次のように私のユーザーが格納されています

Accounts.createUser({ 
    email: email, 
    password: password, 
    profile:{ 
     firstName: first, 
     lastName: last, 
     type: "Member", 
     organization: organization, 
     created: date 
    } 
}); 

私は私のユーザーリストコンポーネントにユーザーを公開する必要があります知っている、と私はそのprofile.organization一致するユーザーのみを公開する方法を考え出す苦労していますログインユーザーprofile.orgaination。

それは、私はそこまでだはずですので、これはすべてのユーザーを返します。

return Meteor.users.find(); 

をしても、それを私はここを参照してくださいコードの次のブロックを使用してみましたが、それは動作しません、おそらく複数の理由のために私は)私はthis.userを(使用する必要があること、Meteor.user()サーバ側を使用することはできませんというエラーがスローされます...しかし、それはどちらか動作しませんでした:

return Meteor.users.find({ 

    profile:{ 
     organiztion: Meteor.user().profile.organization 
    } 

}); 

私はわかりませんどこから行くかどんな助けでも大歓迎です!

答えて

0

これは動作する可能性があります(テストされていない)。これはサーバー側の機能です。

Meteor.publish("organizationUsers", function() { 
    if (this.userId) { 
    var user = Meteor.users.findOne(this.userId); 
    var org = user.profile.organization; 
    return Meteor.users.find({'profile.organization': org}); 
    } 
}); 

クライアント側では、あなたが欲しいユーザーをフィルタ(および現在のユーザーを除外)を持つことができます。

Meteor.users.find({'profile.organization': org, '_id' : {$not : Meteor.userId()}}); 
+0

あなたの先生は天才です。ありがとう、サーバー側が働いた。他の組織の誰かが別の組織のユーザーにアクセスできないように、サーバー側を制限したいと思っていました。 – TyGoss

関連する問題