【问题标题】:Do queries get triggered on any change or just when their result changes?查询会在任何更改时触发还是仅在结果更改时触发?
【发布时间】:2019-07-10 07:01:44
【问题描述】:

我想知道您收听的 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 是否会因集合中的任何更改而触发,例如当为用户添加了较低的分数时,或者只是在结果发生变化时,即为该用户添加了较高的分数。

【问题讨论】:

    标签: firebase flutter dart google-cloud-firestore


    【解决方案1】:

    通过实证研究,我发现了以下几点:

    • 查询将最初返回一个结果,无论是否存在匹配项,即当用户在该集合中没有文档时也是如此。

    • 之后,它会在结果更改时触发,即当该查询返回的文档不同时。
      例如,在查询已在收听时为该用户添加第一个分数,在收听时删除最高分数,然后为查询添加更高的分数。
      因此,DocumentChange 的数量将是 12

    查询将完全忽略任何添加或删除但不影响结果的文档。为了扩展实时收听,这也是强制性的。

    此外,文档somwhat 证实了这一点。目前还不清楚"contents change" at the beginning of the article 的含义或in the where-query section 的含义是哪些文档(添加、删除或修改)。但是,可以假设仅表示重要的文档和内容,我的测试已经证实了这一点。

    【讨论】:

    • 如果您发现文档令人困惑或不完整,您可以使用每页顶部的“发送反馈”按钮。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-03
    • 2012-08-21
    • 2022-08-17
    • 1970-01-01
    • 1970-01-01
    • 2018-08-01
    相关资源
    最近更新 更多