【发布时间】:2022-01-27 05:29:03
【问题描述】:
我有一个 Firestore 数组,其中包含输入用户(作为 ID)。我的目标是在应用程序终止时从该聊天中删除当前用户。我已阅读此thread,其中 Frank van Puffelen 说您可以使用以下代码删除断开连接时的值:
ref.child("Clients").child(user.uid).child("current_venue").onDisconnectRemoveValue()
我的问题是这段代码只能从数据库中删除一个子文档,而不是一个数组。有什么方法可以为 Firestore 阵列调用 onDisconnectRemoveValue() 吗?或者这种情况有什么替代方案吗?
这是我的数据库结构的样子:Collection(Chats) -> Document(ChatID) -> Array(typingUsers)
【问题讨论】:
-
几个问题。该问题已标记为 Firestore,但代码适用于实时数据库,并且它们不兼容。其次,onDisconnect 仅适用于 RTDB。您的代码提到了 Firestore 数组,所以......实现是什么?然后,问题说明您想在应用程序终止时做某事,这与应用程序断开连接有很大不同。如果您想在应用程序终止时删除数据(例如用户选择“退出”),那么为什么不在他们点击/选择退出时从 Firebase 中删除数据呢?你能澄清这个问题以及你想要做什么吗?
-
嘿 Jay,我现在正在使用 firebase 构建一个实时聊天应用程序。我的聊天数据存储在 Firestore 中。每次用户开始键入时,他的用户 ID 都会从该聊天添加到数组中,以便其他用户知道他何时开始键入。我的问题是,如果您开始输入然后应用程序终止,我不知道如何删除该值,最好说:我不知道如何以更温和的方式删除此数组值,然后循环遍历我的所有聊天记录并从输入数组中删除该用户。
-
好的,我想你可能正在做类似的事情。 Firestore 不支持“存在”,因此它根本没有 onDisconnect 功能;但 RTDB 确实(它使用套接字)。所以这里的关键是使用两个数据库。利用 RTDB 中的 onDisconnect 触发云函数,然后对 Firestore 采取行动。在文档Build presence in Cloud Firestore 的 Cloud Firestore 解决方案部分实际上有一个解决方案
-
感谢您的回答,我会看看再回复您
标签: swift xcode firebase firebase-realtime-database applicationwillterminate