【问题标题】:How to work around a compound array-contains query in firestore如何解决 Firestore 中的复合数组包含查询
【发布时间】:2020-10-20 00:16:55
【问题描述】:

我有一个名为friendships 的firestore 集合,它记录了哪些用户与谁成为朋友。此集合的每个文档都有一个数组,其中包含彼此为朋友的两个用户的 firebase uid。例如:

userArray: [hXz6GBtqOuUOkQ8qGmx2Te4d0Do1, 8fx9iFSslvMkfk2eiIpjUuqZT9H2]

我想查找包含两个特定用户 ID 的友谊文档。我目前正在对一个 uid 执行array-contains 查询,然后遍历查询文档以查找哪个文档包含另一个 uid。但是,这会导致大量文档读取并花费大量金钱。 Firstore 不支持复合 array-contains 查询,但我想知道是否有办法解决这个问题。

例如,我可以将每个 uid 设为自己的字段吗?

【问题讨论】:

    标签: javascript firebase google-cloud-firestore


    【解决方案1】:

    是的,您可以通过为每个 UID 使用一个字段来做到这一点。这些字段必须以可预测的顺序包含 UID。最简单的做法是对 UID 字符串进行排序,uid1 中的存储越小,uid2 中的存储越大。然后,您的客户可以使用两个相等过滤器使用相同的顺序进行过滤。

        .where('uid1', '==', 'abcd')
        .where('uid2', '==', 'efgh')
    

    本文档的读者和作者都必须以相同的方式对 UID 进行排序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-08
      • 2020-12-30
      • 1970-01-01
      • 2019-01-31
      • 2020-07-08
      相关资源
      最近更新 更多