我有一个 Android 应用程序,可以跟踪某些元素及其数量。
我需要的是一种让用户在离线时以正确的同步顺序修改多个设备上的数据的方法。
我不知道如何最好地解释它,所以我举个例子:
这种情况是否可以在 Firebase 中本地防止,或者我应该,例如,我自己在项目上使用时间戳,并且只有在更新时才替换它?
谢谢。
最佳答案
将时间戳字段添加到数据库中的每个项目并在 firebase 中编写安全规则似乎有效。
需要考虑的事情是,离线时,我能获得的唯一时间戳来自设备,而不是来自服务器,因此有时会导致我们不想要的数据被覆盖。对于这个项目来说,它仍然足够好。
以下是检查这些时间戳所需的数据库规则:
"$name" : {
".write": "!data.exists() || (newData.child('timestamp').isNumber() && data.child('timestamp').val() <= newData.child('timestamp').val())"
}
它说:“如果没有数据,或者存储的数据具有新请求的旧时间戳,您可以写入”
制作这些时要记住的重要一点是,父节点会覆盖子节点中的规则。这意味着任何写身份验证也应该在这个级别上完成。
关于Firebase - 两个离线设备修改相同的数据和更改顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40960749/