有没有一种方法可以监听集合中的更改而无需在Firestore中取回文档

时间:2020-07-15 15:57:04

标签: ios swift firebase google-cloud-firestore listener

假设我的应用程序中有一个名为'books'的收藏夹和一个名为“所有书籍”的页面。现在,假设每次'books'集合中有添加,删除或更改时,我想在右上角弹出一条消息,指出“此列表已过时”。是否有任何方法可以使每次更改时都没有让侦听器发回'books'集合中的所有文档?我只想在数据过时而没有其他消息时被通知

如果您知道如何实现这一目标,请告诉我。我擅长使用任何一种语言,但首选使用Swift编写的解决方案。

谢谢!

2 个答案:

答案 0 :(得分:2)

只需在您的updatedon文档中添加一个字段books并将其设置为当前时间(在进行任何写操作时(然后在删除时,您就必须找到隐藏已删除书籍的方法))。

并设置一个这样的侦听器:

colref.where("updatedon", ">", new Date())
      .orderBy("updatedon","desc")
      .limit(1)

通过这种方式,您每次只需要阅读1次即可。

答案 1 :(得分:1)

不可能。文档或集合中的侦听器始终会收到更改的整个文档。

如果您希望收到“精简版”通知,则可以在感兴趣的文档发生更改时尝试使用FCM向客户端发送消息,但是您必须在每个有趣的文档的后端保留一条记录对于每个用户,使用Cloud Functions触发器检查每个更改的列表,然后将每个有趣的更改通知每个客户。这和听众根本不一样,需要做很多工作。