在Cloud Firestore上我有这样的文档引用另一个文档:
在我的示例中,文档Collection A/WJQ9yx67RrqHWQoEp0e2
指的是文档Collection B/rFOEwdw5go4dbitOCXyC
,但当然可以是无限文档,指的是提及的文档。
现在,我想找出Collection A
的所有文档,这些文档都是指这个非常具体的文档Collection B/rFOEwdw5go4dbitOCXyC
。
这怎么可能?我怎么能做到这一点?
Firebase的文档对此有点不清楚。
答案 0 :(得分:9)
你是对的,遗憾的是没有在文档中实际使用Reference
数据类型的例子,实际上只提到它是{{3} }。
最终,Reference
可以像Firestore中提供的任何其他数据类型一样使用,因此可以用来过滤&排序数据。
要实现您的目标,您需要构建Reference
指向Collection B
中的文档,然后使用where
子句过滤数据reference
的{{1}}值。例如,在JavaScript中:
Collection A
查看Supported Data Types section,只需检查路径是否匹配即可比较// Create a reference to the specific document you want to search with
var reference = db.collection("Collection B").doc("rFOEwdw5go4dbitOCXyC");
// Construct a query that filters documents matching the reference
var query = db.collection("Collection A").where("reference", "==", reference);
(扩展Reference
):
Query
这似乎与在两者上调用 isEqual(other: Query): boolean {
// [...]
const sameRepo = this.repo === other.repo;
const samePath = this.path.equals(other.path);
const sameQueryIdentifier =
this.queryIdentifier() === other.queryIdentifier();
return sameRepo && samePath && sameQueryIdentifier;
}
并比较字符串值非常相似。
我昨天制作了一个source for isEqual()
in the Firebase JavaScript SDK,这导致我测试了存储toString()
的可能用途,因此这也适用于此。