【问题标题】:Firebase multi-location update overwriting instead of updating valueFirebase 多位置更新覆盖而不是更新值
【发布时间】:2017-06-29 22:26:22
【问题描述】:

我目前遇到与本文所述完全相同的问题:

https://medium.com/@danbroadbent/firebase-multi-path-updates-updating-denormalized-data-in-multiple-locations-b433565fd8a5

目前Firebase单节点.update()功能不会覆盖其他同级子节点。

但是,当使用多位置 ref.update() 时,同一级别中的所有其他子节点都会被覆盖,本质上充当.set() 函数。

有没有什么方法可以在不覆盖所有相同级别的子节点的情况下实际运行多位置.update()

【问题讨论】:

  • 请在您的问题中包含代表代码和数据。
  • 我也有同样的问题...

标签: firebase


【解决方案1】:

基于这个 github 问题:https://github.com/EddyVerbruggen/nativescript-plugin-firebase/issues/313

一种可能的解决方法是将您要更新的每个字段定义为单独的更新,并将其更新为原子更新的一部分,这样您实际上会更新需要更新的每个单独的字段?

var companiesPath = 'companies/company_name';
var usersPath = 'users/user_nickname';

var data = {};
data[companiesPath] = 'Best Company Name';
data[usersPath] = 'John';

firebase.update(data);

因此您无法更新完整的对象,您需要针对该对象的各个字段。我刚刚测试了它,这很有效......

【讨论】:

  • 是的,我使用了与解决方法相同的方法。缺点是如果目标节点中有很多嵌套节点,那么您需要手动输入每个节点及其值,否则它们将被删除
  • 你应该尽量减少数据的嵌套,保持firebase数据库尽可能的平坦...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-31
相关资源
最近更新 更多