Я новичок в 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");
});
},
......
Когда я вызываю функцию отладки, я получаю
Неперехваченный (в промисе) TypeError: c[b] не является функцией(…).
Трассировки стека:
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 их не загружает. Я установил правила базы данных так, чтобы данные были общедоступными, чтобы устранить потенциальные проблемы с авторизацией, но это не помогло.
{
"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);
},
С этой настройкой я получаю другую ошибку. Вот вывод из консоли:
пользователи/Z5uAEYO2S1g2JYClpkk1Vtw130i2
app-storage-behavior.html:350 Установка значения Firebase в users/Z5uAEYO2S1g2JYClpkk1Vtw130i2 для объекта {firstName: , lastName: }
firebase-database-behavior.html: 61 Uncaught (в обещании) TypeError: невозможно прочитать свойство 'ref' из undefined (…) _setFirebaseValue
Ошибка в следующей строке файла firebase-database-behaviour.html:
результат var = this.db.ref(path).set(leaf ? value.$val : value);
похоже, что есть какая-то проблема с конфигурацией, но аутентификация работает нормально, поэтому я ничего не знаю.
Я застрял на этом, поэтому любая помощь будет оценена.
Спасибо, Ян
.save(this.userDataPath)
вот в чем проблема, вы не можете обновить данные в user/uid до нового местоположения user/uid/randomkey - person linto cheeran   schedule 13.11.2016this.$.document.save(this.userDataPath).then(function () { console.log("success"); });
я думаю, что вы пытаетесь переместить родительскую папку в ее собственный дочерний элемент - person linto cheeran   schedule 13.11.2016