我想使用firebase-document
. 看来数据已正确保存,但立即被覆盖。这是我得到的错误...
同步到内存。
从 Firebase 值更新数据:对象 {comment:“foo”,日期:“bar”,id:“-XXXxxxxxxXXXXXXxxxx”,商家:“baz”,状态:“bat”...}
app-storage-behavior.html:368同步到内存。
app-storage-behavior.html:350
从 Firebase 值更新数据:对象 {date:""}
看到日志中的第二段了吗?这是我不希望看到的。这可能是什么原因造成的?我能做些什么来实现我想要的行为?这是我的代码...
x-el.html<firebase-document
id="document"
app-name="my-firebase"
data="{{editableItem}}"
log>
</firebase-document>
...
save: function() {
return this.$.document.save(this.itemsPath);
}
编辑
这是控制台日志的屏幕截图。查看第二个同步到内存日志。它描述了将本质上是一个空对象的内容{date:""}
写入内存(firebase)。此操作会覆盖前一个对象:{comment: "c", date: "", merchant: "c", status: "new", total: "3"}
写入相同的位置。
这是有问题的 firebase-document.html 文件。
以下是相关的代码部分。
firebase-document.htmlattached: 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);
});
});
}
}