Firebase Firestore-如何侦听集合中所有文档的元数据更改

时间:2018-10-19 05:40:54

标签: android firebase kotlin google-cloud-firestore

我有文本视图,可侦听多个子文档集合中的文档数量。

主要收藏
-文件1
---- Sub Collection
------文件1a
------文件1b
-文件2
---- Sub Collection
------文件2a
------文件2b
------文件2c

所以,听听我得到的改变;
text1 = 2,text2 = 3


在应用程序中,我执行批量写入操作以将文档上传到子集合中,然后侦听器处理更改集合中文档的数量。 我提交该批次后,就会触发监听器并更新该编号,然后将其写入Firestore,如here - Get realtime updates with Cloud Firestore

所示

我只想在将数据写入Firestore之后更新文本视图。在上述页面中有些描述了一种实现方式:

FirebaseFirestore.getInstance()
            .collection("Main Collection")
            .document("Doc 1")
            .collection("Sub Collection")
            .document("Doc 1a")
            .addSnapshotListener(MetadataChanges.INCLUDE) { snapshot, exception ->
                var pending = snapshot!!.metadata.hasPendingWrites()
                //do stuff only when pending == false
            }

问题:
 1.元数据每次更改时,上述变量“ pending”是否会更改?我写的正确吗?
 2.我的代码遍历每个主文档,并为子集合doc计数设置一个侦听器。上面的代码段仅适用于单个文档,并且不想为一个文档设置多个侦听器。如何使用它来侦听子集合文档计数和侦听元数据更改?
 3.是否有一种完全不同且更有效的解决方法?

谢谢。

1 个答案:

答案 0 :(得分:0)

经过进一步测试...

  1. 每次元数据更改时,都会触发侦听器或侦听器的至少一部分。因此变量“待处理”的值将发生变化。
  2. 在第一次测试时,我一定有一些语法错误,或者我的想法只是吐了些假话...对于使用该Kotlin语法的集合侦听器来说,现在可以正常工作了。
  3. 仍然不确定是否有更好的方法,但这目前行之有效。
相关问题