2016-11-21 8 views
0

エラーが発生したときに流星のユーザーアカウントで作業していました。エラーは私のuserEmailヘルパー機能のコンソールに表示されます。 私の質問は、それがundefinedなら、なぜ出力を得ているのですか?テンプレートヘルパーで例外が発生しました:TypeError:未定義のプロパティ '0'を読み取ることができません

私のhtmlコード:

{{#each user}} 
     {{#if student}} 
      <div class="row"> 
       <div class="user-wrapper"> 
        <div class="row"> 
         <div class="name-wrapper col-md-3"> 
          <span class="head">{{profile.firstname}}</span> 
         </div> 
         <div class="email-wrapper col-md-3"> 
          <span class="head">{{userEmail}}</span> 
         </div> 
         <div class="email-wrapper col-md-3"> 
          <span class="head">{{>starsRating mutable=true class="js-rate-images" id=_id}}</span> 
         </div> 
         <div class="email-wrapper col-md-3"> 
          <span class="head">Remark</span> 
          <button class="btn btn-primary">Enter Remark</button> 
         </div> 
        </div> 
       </div> 
      </div> 
    {{/if}} 
    {{/each}} 

私のヘルパー関数は次のとおりです。コレクションがロードされる前に

Template.Users.helpers({ 
    user: function(){ 
     return Meteor.users.find(); 
    }, 
    userEmail:function(){ 
     return this.emails[0].address; 
    }, 
    student:function(){ 
     return this.profile.profession === 'student'; 
    } 
}); 
+0

'emails'キーは、デフォルトでは公開されません。あなたのユーザーのパブリケーションはどのように見えますか? –

+1

テンプレートは 'return Meteor.user()。emails [0]'でしょうか?あなたが 'accounts-password'を使用していない場合、' accounts-facebook'などの 'emails 'は存在しないかもしれませんが、 – JeremyK

+0

私はaccounts-passwordを使用しています –

答えて

0

あなたの関数が実行されているが、流星ヘルパーが反応性であるので、一度、あなたは結果を得ますコレクションが読み込まれます。そのメッセージを防止するための
一つの方法は、条件付きでコードを実行することです:

if(this.emails !== undefined){ 
    return this.emails[0].address; 
} 
関連する問題