【问题标题】:How to listen to changes that are made by other users only?如何只听其他用户所做的更改?
【发布时间】:2020-07-08 09:17:46
【问题描述】:

我有一个协作平台,多个用户可以在其中编辑文档。当用户编辑文档时,他们会将新状态发送到其他用户收听的 firebase。然后其他用户更新他们的文档状态。

问题是,侦听器也会为本地用户执行,即使他们是发送数据的人。这是不希望的,因为用户已经更新了自己的状态。

如何仅监听其他用户所做的更改?

为了比较,socket.io 有一个 broadcast() 函数可以做到这一点。为什么firebase没有这个?

【问题讨论】:

    标签: firebase google-cloud-firestore


    【解决方案1】:

    这是不可能的。侦听器总是会接收到文档中数据的所有更改。它实际上只是在所有情况下同步文档的当前状态。侦听器也有可能会错过更新并仅收到文档的最新副本(例如,在离线或负载下)。

    如果您必须能够辨别是哪个用户进行了更改,则应改为存储文档的更改历史记录(增量),每个更改都存储在一个新文档中,其中包含进行更改的用户的 UID,并且只有客户端对来自感兴趣用户的更改采取行动。

    【讨论】:

    • 谢谢。这正是我目前正在做的事情,但它总感觉像是一个 hack。
    • 问题在于您将 Firestore 视为消息广播系统,但事实并非如此。它是一个文档查询和同步系统。它不处理您认为的消息和广播。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-19
    • 1970-01-01
    • 2021-11-11
    相关资源
    最近更新 更多