我想知道您听到的 Cloud Firestore 查询是否会针对该集合的每次更改触发,或者只是在该查询的结果触发时触发具体查询更改。
我主要对cloud_firestore
Flutter plugin的行为感兴趣,但是,我认为这是由Cloud Firestore在后端处理的。
说,我有以下查询:
Firestore.instance
.collection('scores')
.where('uid', isEqualTo: uid)
.orderBy('score', descending: true)
.limit(1)
.snapshots();
这应该只返回特定用户的最高得分。
我想知道Stream
returned from snapshots
是否会因集合中的任何更改而触发,例如当为用户添加较低的分数时,或者只是在结果更改时,即为此用户添加较高的分数。
答案 0 :(得分:0)
通过实证研究,我发现了以下内容:
该查询将最初返回一个结果,即是否存在匹配项,即当用户在该集合中没有文档时。
然后,当结果更改时,即当该查询返回的文档不同时,它将仅触发。
这是在查询已经在侦听时为该用户添加第一个分数,在侦听时删除最高分数并向查询添加更高分数的情况。
因此,DocumentChange
的数量将为1
或2
。
查询将完全忽略添加或删除的所有不影响结果的文档。为了扩展实时收听,这也是必需的。
此外,文档 somwhat 对此进行了确认。目前尚不清楚"contents change" at the beginning of the article是什么意思,in the where
-query section是什么意思(添加,删除或修改的)。但是,可以假定,只有经过测试证明的重要文件和内容才有意义。