我正在关注Polymer + Firebase tutorial video使用 Polymer App 工具套件(使用 Polymer CLI 启动)。
当我尝试将数据推送到 Firebase 集合时,出现以下错误:
无法读取未定义的属性“push”
这是我的代码(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>
最佳答案
首先,我建议将您的代码与 Polycast #58 source in GitHub 进行比较,这可能会更清楚地向您揭示问题。
this.$.query.ref
( <firebase-query>.ref
) 指的是 ref
Polymer.FirebaseDatabaseBehavior
的属性(property),即computed与:
__computeRef: function(db, path) {
if (db == null ||
path == null ||
!this.__pathReady(path) ||
this.disabled) {
return null;
}
return db.ref(path);
},
请注意db.ref(path)
never returns null
,所以ref
是null
必须是 if
的结果陈述。评估每个条件可能会发现问题:
db == null
- 此属性是 computed来自
app.database()
( never returnsnull
),或设置为null
当app
未定义(由<firebase-app>
)。您申报了吗<firebase-app>
与适当的app-name
在导入使用<firebase-query>
的元素之前?
- 此属性是 computed来自
path == null
- 您可能没有设置
<firebase-query>.path
。事实显然并非如此。
- 您可能没有设置
-
- 路径组件之一可能是空字符串或未初始化。对于您的路径(
/users/[[user.uid]]/models
),可能是user
尚未定义(用户尚未登录),这会导致该路径组件中出现空字符串 (/users//models
)。
- 路径组件之一可能是空字符串或未初始化。对于您的路径(
this.disabled
- 您可能已设置
<firebase-query>.disabled
。事实显然并非如此。
- 您可能已设置
关于javascript - polymer + Firebase (Polymerfire) : Cannot read property 'push' of undefined': 'this.$.query.ref.push(...)' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41435694/