我有一个名为“类别”的集合,其中包含一个ID为5gF5FqRPvdroRF8isOwd的单个文档。
我还有另一个收藏集,叫做“门票”。每张票证都有一个参考字段,用于将票证分配到特定类别。
门票集合中的字段称为“类别”,字段类型为reference
。
在下面的代码中,categoryDocId
是我要查询的类别的文档ID。
const categoryDocID = `5gF5FqRPvdroRF8isOwd`;
const files = await firebase
.firestore()
.collection('tickets')
.where('category', '==', categoryDocID)
.get();
为什么files.length
返回0?
为了进行测试,我将category
字段类型更改为字符串,并将其设置为类别ID而不是直接引用。正确返回了分配给该类别的票证,这使我相信这与我如何查询reference
字段有关。
答案 0 :(得分:12)
正如您将在文档中阅读here一样,参考数据类型用于存储DocumentReferences。
如果要在查询中使用它,则不能使用简单的字符串,既不能使用文档的UID(即'5gF5FqRPvdroRF8isOwd'
),也不能使用字段中存储的字符串值(即{{1 }}。
您必须构建一个DocumentReference并在查询中使用它,如下所示:
'/categories/5gF5FqRPvdroRF8isOwd'
答案 1 :(得分:0)
以下是我使用引用类型查询集合的方法(node.js + typescript):
let myCollectionADocument = await admin.firestore().collection("collection_a").doc("documentId").get();
let myCollectionB = await admin.firestore().collection("collection_b").where("collection_a_id", "==", myCollectionADocument.ref).get();