2016-12-06 11 views
0

ドキュメントuserIdを使用して、ドキュメントの単一の属性値を取得するにはどうすればよいですか?文書IDに基づいてコレクション内の単一の属性値を取り出す方法は?

まず、私は次のコード

Session.set('getUserId', Al.findOne({_id: Session.get('appealId')})); 
console.log(Session.get('getUserId').userID); 

を使用して文書_Idを返す私は今、私はMeteor.usersコレクションから別の値を取得するためにuserIDを使用したい、userIDがコンソールで正常に印刷されて見ることができます。ここで

は私のコードは次のとおりです。

Session.set('userDetails', Meteor.users.findOne({_id: Session.get('getUserId').userID})); 
console.log(Session.get('userDetails').profile.annualLeave); 

が、動作していないよう、私は、コンソールで次のエラーを取得する:

TypeError: Cannot read property 'profile' of undefined 

私はSession.get('userDetails').usernameSession.get('userDetails').profile.annualLeaveを変更しようとI usernameが定義されていないと同じエラーが表示される

更新日:

appealIdセッションでは、ルータの項目の_Idを保存するために使用します。後でそれを使用してuserID(アイテム内の属性)を取得します。

Router.route('/appeal/:_id', function(){ 
    Session.set("appealId", this.params._id); 
    this.render("navbar", {to:"navbar"}); 
    this.render("appealDetails", {to:"main"}); 
}); 

答えて

0

エラーメッセージが

Session.get('userDetails') 

が順番に

Meteor.users.findOne({_id: Session.get('getUserId').userID}) 

への呼び出しがない持たなければならないことを意味し、定義されていないことを意味します。ここでは

コードです返されたもの

これらの2つのコードがどのように関連しているのか明確ではないので、Sessionを繰り返し使用すると複雑に見えます。このコード行が

console.log(Session.get('test').userID); 

がある理由を「テスト」は、先ほど私を修正するための

+0

感謝を格納し、何かで、私は「getUserId」セッションを意味し、それを修正しない限り、私も知りません。もう一度申し訳ありません –

+0

しかし、あなたはまだルートの近くにいません。 Session.get( 'appealId')はどこから来たのですか? – Mikkel

+0

私はルータを使ってその値を保存します。私は私の質問を更新:) –

関連する問題