我在Firebase中有以下数据:
Calling JMX MBean method from a shell script
在" -Kabn1954"分支,我想删除项目" apple"。使用Swift,我使用以下命令删除特定分支中特定索引的项目:
pip3 install ImageChops
但是,执行此操作后,Firebase数据如下所示:
正如您所看到的,此分支中的数据现在直接从索引0转到索引2.因此,我收到错误。如何删除索引1处的项目时,其余两个项目的索引为0,后跟索引为1?
答案 0 :(得分:1)
Firebase不会actually store the data as an array,而是将其存储为您正在观察的索引键入的对象。该指南建议您尝试重构数据,以便不使用类似数组的行为。
如果这不可能或者真的不可取,我不知道Swift API是如何工作的,但是在python和JavaScript库中,如果你在父foods
元素上观察,你将会获取一个可以拼接并推送更新的数组对象。我猜测在Swift中也是如此,API indicates也可以返回NSArray
。
正如博客文章所提到的,当您想要重新索引时,您需要更新整个阵列,因为Firebase不会为您执行此操作。可以在setValue()
引用上调用的NSArray
accepts an foods
。在这里要小心竞争条件,你需要将读写封装到单个事务中,以避免丢失更新。