我正在使用Polymer App Tool Kit(使用聚合物CLI启动)跟踪Polymer + Firebase tutorial video。
当我尝试将数据推送到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>
答案 0 :(得分:2)
首先,我建议您将代码与Polycast #58 source in GitHub进行比较,这可能会更清楚地向您揭示问题。
this.$.query.ref
(<firebase-query>.ref
)引用Polymer.FirebaseDatabaseBehavior
的{{3}}属性,ref
为:
__computeRef: function(db, path) {
if (db == null ||
path == null ||
!this.__pathReady(path) ||
this.disabled) {
return null;
}
return db.ref(path);
},
请注意db.ref(path)
computed,因此ref
null
必须是if
声明的结果。评估每个条件可能会发现问题:
db == null
app.database()
never returns null
,computed,或never returns null
未定义时null
<firebase-app>
)。在导入使用<firebase-app>
的元素之前,您是否使用正确的app-name
声明了<firebase-query>
? path == null
app
。事实显然并非如此。/users/[[user.uid]]/models
),可能尚未定义user
(用户尚未登录),这导致该路径组件中的空字符串({{1 }})。 /users//models
!this.__pathReady(path)
。事实显然并非如此。