2017-04-26 70 views
1

目前我有相同的问题,因为这篇文章中概述:火力地堡多位置更新覆盖,而不是更新价值

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

目前火力地堡单个节点.update()功能不会覆盖其他同级别子节点。

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

有没有办法实际运行多位置.update()而不覆盖所有相同级别的子节点?

+0

请在您的问题中包含代表性的代码和数据。 – cartant

+0

我有同样的问题...... – kevinius

回答

2

在此基础上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); 

因此,您无法更新完整的对象,您需要定位该对象的各个字段。我只是测试它,这工作...

+0

是的,我使用了相同的方法作为解决方法。缺点是如果你在目标节点中有很多嵌套节点,那么你需要手动输入每个节点和它们的值,否则它们将被删除。 – user2028856

+0

你应该尽量减少数据的嵌套,尽可能保持firebase数据库尽可能平坦... – kevinius