Polymer + Firebase (Polymerfire): невозможно прочитать свойство "push" из неопределенного ":" this.$. Query.ref.push(...) "
Я слежу за обучающим видео Polymer + Firebase с использованием Polymer App Tool Kit (инициировано с помощью CLI-полимера).
Когда я пытаюсь отправить данные в коллекцию Firebase, я получаю следующую ошибку:
Cannot read property 'push' of undefined'
Вот мой код (приложение firebase запускается в my-app.html с именем "firebase-app"):
<dom-module id="add-model">
<!-- Defines the element's style and local DOM -->
<template>
<firebase-auth user="{{user}}" app-name="firebase-app"></firebase-auth>
<firebase-query
app-name="firebase-app"
id="query"
path="/users/[[user.uid]]/models"
data="{{model}}">
</firebase-query>
<paper-input id="modelName" label="Model Name" "></paper-input>
<paper-button class="create" id="create" on-tap="create" raised>Create</paper-button>
</template>
<!-- Creates the element's prototype and registers it -->
<script>
Polymer({
is: 'add-model',
properties: {
data: {
type: Object
}
},
create: function() {
this.$.query.ref.push({
name: this.$.modelName.value
});
}
});
</script>
</dom-module>
1 ответ
Во-первых, я рекомендую сравнить ваш код с исходным кодом Polycast #58 в GitHub, который может более ясно выявить проблему.
this.$.query.ref
(<firebase-query>.ref
) относится к ref
собственностью Polymer.FirebaseDatabaseBehavior
, который вычисляется с помощью:
__computeRef: function(db, path) {
if (db == null ||
path == null ||
!this.__pathReady(path) ||
this.disabled) {
return null;
}
return db.ref(path);
},
Обратите внимание, что db.ref(path)
никогда не вернется null
, так ref
являющийся null
должен быть результатом if
заявление. Оценка каждого условия может раскрыть проблему:
db == null
- Это свойство вычисляется из
app.database()
( никогда не возвращаетсяnull
) или установлен наnull
когдаapp
не определено (<firebase-app>
). Вы объявили<firebase-app>
с надлежащимapp-name
перед импортом элемента, который использует<firebase-query>
?
- Это свойство вычисляется из
path == null
- Вы не могли бы установить
<firebase-query>.path
, Это явно не тот случай.
- Вы не могли бы установить
!this.__pathReady(path)
- Один из компонентов пути может быть пустой строкой или неинициализированным. Для вашего пути (
/users/[[user.uid]]/models
), возможно, чтоuser
еще не определено (пользователь еще не вошел в систему), что приводит к пустой строке в этом компоненте пути (/users//models
).
- Один из компонентов пути может быть пустой строкой или неинициализированным. Для вашего пути (
this.disabled
- Вы могли бы установить
<firebase-query>.disabled
, Это явно не тот случай.
- Вы могли бы установить