2016-09-30 11 views
0

流星のアカウントモジュールのユーザーコレクションから特定のフィールドを確認するにはどうすればよいですか?次のコード仮にコレクションからのアクセス

:決意内部

$stateProvider.state('myState', { 
    resolve:{ 
    function($q) { 
     if(Meteor.userId()){ 
     return $q.resolve(); 
     } 

     else { 
     retrun $q.reject(); 
     } 
    } 
    } 
}) 

は、ユーザからの_idを取得するためにMeteor.userId()関数を使用することが可能であるが、私は中Meteor.user()関数を使用するカント同じ方法。

resolve: { 
    currentUser: ($q) => { 
     var deferred = $q.defer(); 

     Meteor.autorun(function() { 
      if (!Meteor.loggingIn()) { 
       if (Meteor.user() == null) { 
        deferred.reject('AUTH_REQUIRED'); 
       } else { 
        deferred.resolve(Meteor.user()); 
       } 
      } 
     }); 

     return deferred.promise; 
    } 
} 

これは、ルートは流星まで解決しないことが保証されます:どのように私は決意

+0

を見てどのようです。 user() 'と同じ方法で?この関数は 'user'オブジェクト全体を返しませんか? – lucasnadalutti

+0

はい、それはすべきですか、少なくとも私はそれがすべきだと推測します...それは、Angularがデータをロードする実行命令に何かあるかもしれません。 – 2JN

答えて

0

これは少しトリッキーですから、そのコレクションからカスタムデータを取得するが、あなたの状態で、このコードで解けることができます.user()レコードがロードされ、ログインしていない場合はルートが拒否されます。それはこの1つを見つけるために、私はしばらく時間がかかったが、それは今キーパーだ:)

+0

あなたの答えをありがとう、私は自分のコードに実装しようとしたが、それはビューを解決しない、あなたはこの要点を確認し、私は何か間違っているかどうかを確認できますか? https://gist.github.com/2JN/31bbe6589c450b1df5eadc025d4da06e – 2JN

+0

私はあなたのヘルパーが間違っていると思う: – Mikkel

+0

の代わりにusuario()あなたはusuarioを持っている必要があります。 – Mikkel

0

が主旨に続いて、以下のコードは、あなたが `流星を使用することはできませんなぜ私のヘルパーは

this.helpers({ 
    member:() => Members.findOne({mid: Meteor.userId()}), 
    currentUser:() => { 
     return Meteor.user(); 
    }, 
+0

クラス外のヘルパーにアクセスできますか? – 2JN

+0

また、私は間違っていることを理解しています。解決の中の関数は矢印関数でなければなりません。 – 2JN

関連する問題