2016-11-13 14 views
0

私はPolymerを初めて使用しており、Firebase-documentコンポーネントを使用してユーザーデータを保存しようとしています。ここでPolymerfire TypeError

は、関連するコードスニペットは、次のとおりです。

コンポーネントの初期化:

<firebase-document id="document" app-name="nameoftheapp" 
         path="[[userDataPath]]" data="{{userData}}"> 
    </firebase-document> 

とJavaScript一部:私は、デバッグ機能を呼び出すと

Polymer({ 
     is: 'registration-view', 

     properties: { 
      userData: Object, 
      userDataPath: { 
       type: String, 
       notify: true 
      } 
     }, 

     debugFunction: function() { 
      user = this.domHost.user; 
      this.userDataPath = '/users/' + user.uid; 
      this.userData.firstName = "fname"; 
      this.userData.lastName = "lname"; 
      console.log(user); 
      console.log(this.userDataPath); 
      this.$.document.save(this.userDataPath).then(function() { 
       console.log("success"); 
      }); 
     }, 
     ...... 

私は

Uncaught (in promise) TypeError: c[b] is not a function(…).

を取得します

スタックトレース:

1) debugFunction @ registration-view.html:106 
2) save @ firebase-document.html:82 
3) (anonymous function) @ firebase-document.html:93 
4) c @ firebase-app.js:formatted:939 

誤差が最小firebase-app.jsファイルにスローされますので、私はそれとは非常にスマートではないと思います。うまくいけばすべてが適切に設定されています。ユーザー認証はうまく動作し、アプリ名も問題ありません(アプリが初期化されていない場合はエラーがスローされます)。

データベース内のデータを疑似しようとしましたが、firebase-documentはそれらをロードしませんでした。データベースのルールを設定して、権限の問題の可能性を排除するためにデータが公開されるようにしましたが、それは役に立ちませんでした。

{ 
    "rules": { 
//  ".read": "auth != null", 
    ".read": true, 
//  ".write": "auth != null" 
    ".write": true 
    } 
} 

試み2:

<firebase-document id="document" app-name="doctor-appointment-system" log> 
</firebase-document> 

Javascriptの一部:

debugFunction: function() { 
     this.$.document.path = null; 
     this.$.document.data = { 
      'firstName': this.$.fninput.value, 
      'lastName': this.$.lninput.value 
     }; 
     console.log('users/' + this.domHost.user.uid); 
     this.$.document.save('users', this.domHost.user.uid); 
    }, 

この設定で

私はどのようにデータを保存すると、ここでanother wayを発見したコードです別のエラーが発生しています。ここでは、コンソールからの出力は次のとおりです。

users/Z5uAEYO2S1g2JYClpkk1Vtw130i2

app-storage-behavior.html:350 Setting Firebase value at users/Z5uAEYO2S1g2JYClpkk1Vtw130i2 to Object {firstName: "", lastName: ""}

firebase-database-behavior.html:61 Uncaught (in promise) TypeError: Cannot read property 'ref' of undefined(…)_setFirebaseValue

それはfirebase-データベースbehaviour.htmlに次の行に失敗します。

var result = this.db.ref(path).set(leaf ? value.$val : value);

に構成されたいくつかの問題があるように見えますが、認証が正常に動作しますだから私は無知だ。

私はこの1つに固執しているので、どんな助けにも感謝します。

おかげで、月

+0

私は考えて '' '.SAVE(this.userDataPath)' ''新しい場所のユーザーに、ここで、uは、ユーザーのデータを更新することができない問題がある/ UID/UID/randomkey –

+0

感謝ヒントのために。パスに問題があることは間違いありません。しかし、私がデータを作成している場合(データベースは現在空です)、私はまだランダムキーを持っていませんし、それを解決する方法がわかりません。私はfirebaseがそれ自身の鍵を生成すべきだと思う。だから、私はそれをどうするのですか?ありがとうございます –

+0

https://github.com/firebase/polymerfire/blob/master/firebase-document.html#L81ここでsave()は自動的にuのランダムキーを作成します –

答えて

0

は、私は解決策を見つけたが、私はまだ問題の本質だったかわかりません。私のアプリケーションの構造は、1ページのアプリケーションの構造です。私は、ツールバー、app-route、iron-pages、firebase-auth要素からなるコア足場要素を持っています。上記のコードは、適切なURLが一致したときに鉄ページによって遅延ロードされる登録ビューに位置していました。私はコードをコア・スキ​​ャフォールド・ファイルに直接移動しようとしましたが、すべてうまくいきました。 そして意外にも私が登録ビューでコードを呼び出すと、それも機能しました。私がfirebase-document.htmlをcore-scaffold.htmlにインポートすると、エラーは子に投げられないことが判明しました。

誰かが原因を説明すれば、私は感謝します。

おかげで、月

+0

これは#AskFirebaseや#AskPolymerの良い質問のようです! – jkhoffman