我的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);
还是有另一种方法?
谢谢
最佳答案
Firestore客户端查询中没有通配符。您需要为查询所需的所有集合ID和文档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
的所有“客户端”子集合文档。关于javascript - 对Firestore子集合中的文档进行通配符查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60130643/