聚合物&x2B;Firebase:Firebase文档,数据是否被覆盖?

聚合物&x2B;Firebase:Firebase文档,数据是否被覆盖?,firebase,polymer,firebase-realtime-database,polymer-1.0,firebase-polymer,Firebase,Polymer,Firebase Realtime Database,Polymer 1.0,Firebase Polymer,我想使用firebase文档将数据保存到我的firebase。数据似乎已正确保存,但立即被覆盖。以下是我得到的错误 console.log 同步到内存。 从Firebase值更新数据:对象{注释:“foo”,日期:“bar”,id:-xxxxxxxxxxxx,商户:“baz”,状态:“bat”…} 应用程序存储行为。html:368 同步到内存。 应用程序存储行为。html:350 正在从Firebase值更新数据:对象{date:} 看到日志中的第二段了吗?这是我不希望看到的。这可能是什么原因

我想使用
firebase文档
将数据保存到我的firebase。数据似乎已正确保存,但立即被覆盖。以下是我得到的错误

console.log 同步到内存。
从Firebase值更新数据:对象{注释:“foo”,日期:“bar”,id:-xxxxxxxxxxxx,商户:“baz”,状态:“bat”…}
应用程序存储行为。html:368

同步到内存。
应用程序存储行为。html:350
正在从Firebase值更新数据:对象{date:}

看到日志中的第二段了吗?这是我不希望看到的。这可能是什么原因造成的?我能做些什么来实现我想要的行为呢?这是我的密码

x-el.html
this.$.document.save(this.itemsPath)
的副作用是
firebase文档的
路径将重置为指向您在数据库中创建的新项目。但是,此代码作为
路径
单向绑定到
firebase文档
,因此每次保存数据时,您都将组件重新写入数据库中没有数据的位置。双向绑定和/或根本不绑定
path
,或者在
save(parentPath,key)
中使用显式
,这样匹配的目标
editableItemId
应该可以解决您的问题。

此。$.document.save(this.itemsPath)的副作用
是指将重置
firebase文档的
路径
,以指向您在数据库中创建的新项目。但是,此代码作为
路径
单向绑定到
firebase文档
,因此每次保存数据时,您都将组件重新写入数据库中没有数据的位置。双向绑定和/或根本不绑定
path
,或者在
save(parentPath,key)
中使用显式
,这样匹配的目标
editableItemId
应该可以解决您的问题。

我以前在“同步到内存”方面也遇到过类似的问题。我所做的是直接使用firebase.database函数(如add和set)进行更改,并且从不尝试对中的数据进行更改。我使用。如下列文件所述:


我们必须将下载的数据/数组视为只读。并使用firebase.database函数直接在firebase中进行更改。通过这种方式,侦听并更新自身,这是一个循环。不过,为了使用ID修改特定更改,添加了一个arrayfromquery[0]。中的$key数据可供使用。我想这并不完全相关,但我希望它能有所帮助:)

我以前在“同步到内存”方面也遇到过类似的问题。我所做的是直接使用firebase.database函数(如add和set)进行更改,并且从不尝试对中的数据进行更改。我使用。如下列文件所述:


我们必须将下载的数据/数组视为只读。并使用firebase.database函数直接在firebase中进行更改。通过这种方式,侦听并更新自身,这是一个循环。不过,为了使用ID修改特定更改,添加了一个arrayfromquery[0]。中的$key数据可供使用。我想这并不完全相关,但我希望它确实有帮助:)

+1因为这给了我一些合理的尝试。然而,这个问题仍然存在。我删除了
firebase文档
元素中的
path
属性(我相应地编辑了问题中的代码以反映这一点),并且出现了相同的错误和行为。你知道还有什么可能导致这种情况吗?除此之外,如果没有一个实例,就很难跟踪错误。我想跟踪在交互过程中设置了什么
path
,但我也想看看数据库中发生了什么。首先,我要检查您在与Firebase的web套接字连接中是否没有得到明确的错误(特别是权限错误),然后我要将组件中的
路径
与在该路径中实际找到的数据进行比较。如果您碰巧能够连接到jsbin或类似文件,我很乐意看一看。+1因为这给了我一些合理的尝试。然而,这个问题仍然存在。我删除了
firebase文档
元素中的
path
属性(我相应地编辑了问题中的代码以反映这一点),并且出现了相同的错误和行为。你知道还有什么可能导致这种情况吗?除此之外,如果没有一个实例,就很难跟踪错误。我想跟踪在交互过程中设置了什么
path
,但我也想看看数据库中发生了什么。首先,我要检查您在与Firebase的web套接字连接中是否没有得到明确的错误(特别是权限错误),然后我想将组件中的
路径
与在该路径中实际找到的数据进行比较。如果您碰巧能够连接到jsbin或类似的东西,我很乐意看一看。
<firebase-document
    id="document"
    app-name="my-firebase"
    data="{{editableItem}}"
    log>
</firebase-document>
...
save: function() {
  return this.$.document.save(this.itemsPath);
}
attached: function() {
  this.__refChanged(this.ref, this.ref);
},

detached: function() {
  if (this.ref) {
    this.ref.off('value', this.__onFirebaseValue, this);
  }
},

observers: [
  '__refChanged(ref)'
],

...

__refChanged: function(ref, oldRef) {
  if (oldRef) {
    oldRef.off('value', this.__onFirebaseValue, this);
  }
  if (ref) {
    ref.on('value', this.__onFirebaseValue, this);
  }
},

__onFirebaseValue: function(snapshot) {
  var value = snapshot.val();
  if (value == null) {
    value = this.zeroValue;
  }
  if (!this.new) {
    this.async(function() {
      this.syncToMemory(function() {
        this._log('Updating data from Firebase value:', value); // Causes overwrite
        this.set('data', value);
      });
    });
  }
}