2016-09-23 10 views
1

に渡すときに未定義エラーのプロパティを読み取ることができないので、次のエラーが発生し続ける:Exception in template helper: TypeError: Cannot read property '_id' of undefined at Object.editable。私は運がないとそれをデバッグしようとしてきました。ユーザデータを流星テンプレート

私はuser objecteditUser templateに渡そうとしています。編集をクリックしてフォームを取得すると、入力フィールド内にuser previous valuesが表示されますが、フォームに表示される値を取得できません。ここで

は、私が今持っているコードです:

# users.js 

// Helpers 
Template.user.helpers({ 
    user:() => { 
     let user = Meteor.user() ? Meteor.user() : 'Unable to pull user info'; 
     return user 
    }, 
    editable: function() { 

     let currentUserId = Meteor.user()._id; 
     let currentUser = Meteor.user(); 

     // let currentUserFind = Meteor.users.findOne({_id: this._id}); 

     return Session.equals('editUser', currentUserId); 
    } 
}); 


# user.tpl.jade 
// Events 
Template.user.events({ 
    'click .form-edit'(e) { 
     e.preventDefault(); 

     let currentUser= Meteor.user({}); 
     let currentUserId = Meteor.user()._id; 
     let currentUserFind = Meteor.users.findOne({_id: this._id}); 

     console.log(currentUserId); 
     console.log(currentUserFind); 
     // console.log(this._id); 

     Session.set('editUser', currentUserId); 
     // Session.set('editUser', this._id); 
    } 
}); 

if editable 
    +editUser 
else 
    with currentUser 
     .card.card--user 
      h3.card__title= username 
      p.card__content= profile.email 
      p.card__content= profile.firstName 
      p.card__content= profile.lastName 
      p.card__content= profile.bio 
      button.card__btn.form-edit Edit 

私はiduser objectを渡して試してみましたが、私はエラーが消えて取得することはできません。任意の助けが大いに評価されるでしょう

答えて

1

私はこの例外をMeteor.user()._idで見ましたが、あなたはMeteor pseudo-globalをインポートしません。 import {Meteor}になると例外が表示されなくなります。 Meteor.userId()も作業を行います。

+0

おかげで 'Meteor.userId()'は実際に私のエラーの問題を解決しました。私はまだ私の編集フィールド内のユーザーデータを見ることができません。それをどうやって解決できるのか知っていますか?ありがとう – intercoder

+0

私はあなたのコードの最後の部分を理解していないが、現在のユーザーとのセッションヘルパーを持っているので、あなたのテンプレートでそれを使用することができます。たとえば、入力フィールドをユーザー名で事前入力する場合は、。ところで、流星はすでにヘルパーcurrentUserを提供しています、あなたはそれを定義する必要はありません。 – Kostas

+0

Hey manは 'value = '{{currentUser.profile.name}}'の入力フィールドの中で問題を解決しました。私は 'value = '{{user.profile.name}}' 'として渡そうとしていましたが、何も見えませんでした。なぜそれが分かっていますか? PS:コードの最後の部分はちょうどヒスイの文法で、スペースバーやブレーズの{{username}}と同じです – intercoder