【发布时间】:2017-10-02 09:44:03
【问题描述】:
我的 firebase dB 中有一条记录要更新。因为我将播放器对象绑定到我不想在提交更新之前刷新的 UI 组件,所以我制作了真实 firebase 记录的克隆副本,如下所示:
newPlayerWithSameKey(p: Player): any {
const origKey = (<any>p).$key;
const duplicate = JSON.parse(JSON.stringify(p))
duplicate.$key = (<any>p).$key;
return duplicate;
}
如果我在控制台中记录,p 和 duplicate 完全一样。
然后将副本注入到我处理记录的数据服务上的更新方法中。我正在尝试以这种方式更新它:
updatePlayer(player: Player): void {
const key = this.getKey(player);
// The following three lines are just for the console log to demonstrate
let shouldBeThePlayerToBeUpdated;
this.db.object('/players/' + key).subscribe(p => shouldBeThePlayerToBeUpdated = p);
window.console.log('Mock player: ', key, JSON.stringify(shouldBeThePlayerToBeUpdated));
window.console.log('Updating player with key: ', key, JSON.stringify(player));
this.db.list('/players').update(key, player)
}
private getKey(p: Player): string {
return (<any>p).$key
}
但我收到以下错误:您可以看到键完全匹配,并且 firstName 属性正在正确更新(这就是我在表单中所做的)。我真的很困惑这里的问题是什么......有人有想法吗?
【问题讨论】:
-
试试this.db.object('/players/'+key).update(...)
标签: angular firebase firebase-realtime-database angularfire2