繁体   English   中英

将快照侦听器添加到集合 Firestore

[英]Adding a Snapshot Listener to a Collection Firestore

所以我对 firebase 有点陌生,我正在开发一个 android 应用程序。 我想做的是:我想创建一个在后台运行的服务,可以在 firestore 中收听整个集合(例如“消息”),一旦将文档添加到集合中,我想检查文档是否包含特定值,以及是否推送通知。 伪代码概述:

   messages.attachlistener(onNewDocument(doc) -> {

      if(doc.getString(username) == my_username)
      {
          send_notification(doc.getString(message));
          cache_message_for_later();
          delete_doc_from_table();
       }
    };

我的问题是:是否可以将监听器附加到集合中? 我只在文档中找到了文档监听器。 如果可能的话,这样的听众在性能方面是否可行? (我的想法:该服务将始终在后台运行,但文档在缓存后会被删除,因此表大小不会太大并且可能会平衡?)

您可以将侦听器附加到DocumentReferenceQuery 正如您从 API 文档中看到的那样,原来CollectionReference是 Query 的子类,这意味着您可以为 CollectionReference 添加一个监听器就好了。 以这种方式作为查询的 CollectionReference 将为您提供该集合中的所有文档,然后是对该集合中任何文档的所有更改,就像您在 文档中看到的那样(除非您不使用任何 where 子句).

我快速检查了我的代码以确认。

你可以做这样的代码,没有问题:

val db = FirebaseFirestore.getInstance()
val query = db.collection("Quotes_historyfavorites").document(userId)
                .collection(FireBaseConstants.QuoteCollection.FAVORITE)
                .orderBy("Added", Query.Direction.DESCENDING)

我不确定顶级收藏是否可能,但我相信您在遇到性能问题之前会遇到资金问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM