2016-12-06 7 views
0

私はMeteorアカウントの柔軟性に懸念しています。現在のログインユーザーの特定の属性(Meteor.user.profile)に基づいてクライアント側にMeteor.usersコレクションを返信したい現在ログインしているユーザーに基づいてMeteor.usersコレクションから特定のユーザーを戻すにはどうすればいいですか?

たとえば、HRポジションを持つユーザーは、彼の下で働いているユーザーのみを返すことができます。彼の下で働く従業員はemployeeHR属性を持つでしょう。

今私があなたから望むのは、私が取る予定のアプローチが実現可能かどうかを知ることです。

私の目的に役立つより良いアプローチがありますか?

UPDATE:

私はauthorityLevelの値を取得することができるかどうかをテストするために、次のコードを使用し、それが正常にコンソールに出力される。

Session.set('checkAuthority', Meteor.user().profile.authorityLevel); 
console.log(Session.get('checkAuthority')); 

その後、私が戻ることを試みましたauthorityLevelに基づいているユーザーは、ここにコードがあります:

if(!Meteor.user().profile.authorityLevel){ 
      return Meteor.users.find({}, { sort: {createdAt: -1}}); 
     } 
     if(Meteor.user().profile.authorityLevel === "HR") { 
      return Meteor.users.find({authorityLevel: "HRemployee"}, { sort: {createdAt: -1}}); 
     } 

これは機能しません。コンソールでエラーが発生しました

Exception in template helper: TypeError: Cannot read property 'profile' of null 
    at Object.employees 

私はここで間違っていますか?

注:

私はauthorityLevel属性

答えて

0

流星のアカウントを持つユーザーでログインしても同じエラーを取得するには、柔軟性がたくさんあります。

1つのアプローチは、役割とグループを定義するためのalanning:rolesパッケージを使用することです。

組織(例:部門)を反映するグループを定義できます。 HRユーザーは、管理するロールがあれば、グループ内のユーザーを見ることができます。

+0

別のpackage.Iを使用するのではなく、より速い解決策を実装しようとしています。私の質問が更新されました。 –

0

Meteor.user()は、クライアントに完全に公開される前に表示されています。実行します。

if(Meteor.user() && !Meteor.user().profile.authorityLevel) 

あなたがprofileキーを読み取ろうとする前に、それはすべてがありますことを確認します。

慰めがあれば、誰もがメテオ学習曲線に沿っていつでもこの問題に遭遇します。

関連する問題