如何知道 Firebase DataSnapshot 何时在服务器端持久化
How to know when Firebase DataSnapshot has been persisted server side
我正在使用 Firebase 建立聊天,使用离线功能 (keepSynced(true)
)
它工作得很好,除了我无法找到一种方法来知道 DataSnapshot 消息是否确实已保存在服务器端,就好像我查询消息 Firebase 会告诉我它存在(它在本地存在!)。
我找到了有关交易的信息,但它没有离线保存。
我也找到了查看Firebase的连接状态,但是是全局状态,并不能一一反映快照状态。
我找到的唯一解决方案是在我反对的消息中添加 属性 "persisted",这个 属性 是由服务器端函数设置的,但这似乎有点过分了.我很确定 Firebase 在本地确实知道哪些值尚未保留?
在 Android 上,当您执行任何写入操作时,您将获得一个 Task object in return, or you may specify a CompletionListener 作为参数。这些中的任何一个都将指示服务器何时接收到数据。如果你不使用这些,你没有其他迹象。
如果您无法坚持使用 Task 或 CompletionListener,使用 Cloud Functions 在写入时标记位置当然是另一种方法。
我正在使用 Firebase 建立聊天,使用离线功能 (keepSynced(true)
)
它工作得很好,除了我无法找到一种方法来知道 DataSnapshot 消息是否确实已保存在服务器端,就好像我查询消息 Firebase 会告诉我它存在(它在本地存在!)。
我找到了有关交易的信息,但它没有离线保存。
我也找到了查看Firebase的连接状态,但是是全局状态,并不能一一反映快照状态。
我找到的唯一解决方案是在我反对的消息中添加 属性 "persisted",这个 属性 是由服务器端函数设置的,但这似乎有点过分了.我很确定 Firebase 在本地确实知道哪些值尚未保留?
在 Android 上,当您执行任何写入操作时,您将获得一个 Task object in return, or you may specify a CompletionListener 作为参数。这些中的任何一个都将指示服务器何时接收到数据。如果你不使用这些,你没有其他迹象。
如果您无法坚持使用 Task 或 CompletionListener,使用 Cloud Functions 在写入时标记位置当然是另一种方法。