【问题标题】:Wildcard queries for documents in Firestore subcollectionsFirestore 子集合中文档的通配符查询
【发布时间】:2020-02-08 19:57:13
【问题描述】:

我的 Firestore 数据库组织如下: (col = 集合,doc = 文档)

-data (col)
  -userid -> random number (doc)
    -clients (col)
      -clientid -> random number (doc)
      -clientid -> random number (doc)
  -userid(doc)
    -clients (col)
      -clientid -> random number (doc) 
      ...

我需要读取特定“clientid”文档中的所有数据,只要求用户插入它的 clientid 随机数。

我想知道我是否可以像在数据库规则中那样使用通配符语法读取这些数据:

var clientid = "65486649466"
var clientdata = db.collection("data").doc({userid}).collection("clients").doc(clientid);

或者还有其他方法可以做到这一点? 谢谢

【问题讨论】:

    标签: javascript google-cloud-firestore


    【解决方案1】:

    Firestore 客户端查询中没有通配符。您需要提供查询所需的所有集合和文档 ID 的准确值。

    如果您需要查询整个数据库中所有称为“客户端”的子集合(包括嵌套在“数据”下的子集合以及其他地方),您可以改为使用collection group query 来查找这些文档:

    const query = db.collectionGroup("clients")
    query.get()...
    

    此查询将返回所有名为“clients”的子集合中的所有文档。遗憾的是,您无法根据每个客户端文档的文档 ID 过滤此查询。为此,您还需要将客户端文档 ID 作为字段写入每个文档中。假设您已经这样做了,并且字段名称称为“id”:

    const query = db.collectionGroup("clients").where("id", "==", clientid)
    query.get()...
    

    这将为您提供“id”字段为clientid 的所有“clients”子集合文档。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-26
      • 2021-04-08
      • 2021-07-12
      • 2018-06-19
      • 1970-01-01
      • 2020-12-02
      • 2020-05-08
      • 2021-09-25
      相关资源
      最近更新 更多