使用本地firebase数据库,可能会损坏

使用本地firebase数据库,可能会损坏,firebase,firebase-realtime-database,thread-safety,corruption,Firebase,Firebase Realtime Database,Thread Safety,Corruption,我需要使用Firebase数据库,为此,我将快照的副本存储在全局变量中,使用侦听器的onDataChange()函数检索快照 当我使用全局副本时,如果Firebase数据库中发生了来自其他设备的更改,全局副本是否会在我使用时被更改,从而损坏它?如果是这样,是否有已知的解决方案?DataSnapshot对象的内容永远不会更改。它们是不变的 如果使用新快照重新分配全局变量,显然全局变量将发生更改。但是,只要您通过局部变量处理快照,处理局部变量的代码就不会看到更新。因此,假设我想从数据库中检索3个变量

我需要使用Firebase数据库,为此,我将快照的副本存储在全局变量中,使用侦听器的
onDataChange()
函数检索快照


当我使用全局副本时,如果Firebase数据库中发生了来自其他设备的更改,全局副本是否会在我使用时被更改,从而损坏它?如果是这样,是否有已知的解决方案?

DataSnapshot对象的内容永远不会更改。它们是不变的


如果使用新快照重新分配全局变量,显然全局变量将发生更改。但是,只要您通过局部变量处理快照,处理局部变量的代码就不会看到更新。

因此,假设我想从数据库中检索3个变量,并且我有一个datasnapshot的全局副本。如果在我检索到2个变量后,另一个设备更改了数据库变量,这意味着将在onDataChanged()函数中设置全局变量:这会导致最后一个变量为较新版本吗?如果是这样的话,有没有办法防止这种情况发生,这样我就可以在更改全局变量之前获得所有旧版本?我不清楚你现在在问什么。请随代码一起发布一个新问题,该代码没有按照您期望的方式工作。听起来你的问题更多的是关于编程语言如何工作,而不是Firebase如何工作。正如我所说,快照是不可变的,当涉及到随时间变化的变量时,这就是Firebase SDK真正需要了解的所有内容。如果你需要记住旧的快照,你需要一个地方来存储它们。很抱歉重复我自己的话,我对你的答案有点困惑,但我想我现在明白了。谢谢你的帮助^^