javascript - polymer + Firebase (Polymerfire) : Cannot read property 'push' of undefined': 'this.$.query.ref.push(...)'

标签 javascript firebase firebase-realtime-database polymer

我正在关注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 ,所以refnull必须是 if 的结果陈述。评估每个条件可能会发现问题:

  • db == null

    • 此属性是 computed来自app.database() ( never returns null ),或设置为 null app 未定义(由 <firebase-app> )。您申报了吗<firebase-app>与适当的app-name在导入使用 <firebase-query> 的元素之前?
  • path == null

  • !this.__pathReady(path)

    • 路径组件之一可能是空字符串或未初始化。对于您的路径( /users/[[user.uid]]/models ),可能是 user尚未定义(用户尚未登录),这会导致该路径组件中出现空字符串 ( /users//models )。
  • this.disabled

关于javascript - polymer + Firebase (Polymerfire) : Cannot read property 'push' of undefined': 'this.$.query.ref.push(...)' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41435694/

相关文章:

android - 如何从 Firebase 数据列表加载 AutoCompleteTextView?

javascript - 在 Canvas 上绘制矩形

javascript - 为什么我的错误没有在我的快速回复中返回?

javascript - Ajax 错误重定向

angular - 从 observable 的 finalize 方法返回一个 observable

firebase - Flutter:当 TextView 聚焦时,屏幕键盘不打开

firebase - 使用 bolt 部署规则会添加额外的 "rules"包装器

java - 在应用程序上使用时,对每个 "getKey()"的 Firebase 上的所有数据进行重新分组

firebase - runTransaction 和 set() 之间的区别

php - 基于单选按钮选择的下拉菜单