12403


こんにちは。Meteor初心者です。

アカウントに関する質問です。  
パッケージは accounts-password と meteor add accounts-ui を使っています。

currentUser のメールアドレスに応じて、見せる画面を変えたいと思っています。  
以下のようなコードを、client側のヘルパー関数の中に置いて実行してみました。

[code]

    1 var address = Meteor.user().emails[0].address;
    2 console.log(address); // for debug
    3 if (address == 'a@b.com') { ... }
    
[/code]

これで、結果は思った通りになります。  
2 の結果として、コンソールにアドレスが表示され、  
3 の条件分岐は期待通りに動きます。

ところが、コンソールに、次のようなメッセージが出てしまいます。

"Exception in template helper: TypeError: Cannot read property 'emails' of
undefined"

あるいは、undefined が null の場合もあります。  
（この後に長いメッセージが続くのですが、割愛します）

何か、おかしなことが起きているのでしょうか。  
この Exception が出ないようにするには、どうすればいいでしょうか。


CC BY-SA 3.0
2015-07-15T04:55:16.717
12368
2015-07-16T02:16:09.067
10536
question
meteor
Meteor.user().emails[0].address を取得できるも、Type Error が出てしまう


自己解決しました。単に、戻り値の変数の型チェックをしていなかっただけでした。すみません。

その後、クライアント側ではなくサーバ側のMeteor.publishの中で実行するようにして、  
if (this.userId) {...} のチェックをしてOKです。


CC BY-SA 3.0
2015-07-16T02:16:09.067
12403
2015-07-16T02:16:09.067
10536
12368
answer