私は Polymer を初めて使用し、Firebase-document コンポーネントを使用してユーザー データを保存しようとしています。
関連するコード スニペットは次のとおりです。
コンポーネントの初期化:
<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 (約束) 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);
},
このセットアップでは、別のエラーが発生します。コンソールからの出力は次のとおりです。
users/Z5uAEYO2S1g2JYClpkk1Vtw130i2
app-storage-behavior.html:350 users/Z5uAEYO2S1g2JYClpkk1Vtw130i2 の Firebase 値を Object {firstName: "", lastName: ""} に設定します
firebase-database-behavior.html:61 Uncaught (in promise) TypeError: Undefined(…)_setFirebaseValue のプロパティ 'ref' を読み取れません
firebase-database-behaviour.html の次の行で失敗します。
var result = this.db.ref(path).set(leaf ? value.$val : value);
構成に問題があるようですが、認証は正常に機能するため、私にはわかりません。
私はこれで立ち往生しているので、どんな助けにも感謝します。
ありがとう、ヤン