我正在使用Swift和Cloud Firestore数据库开发一个小型iOS应用。
我有一个馆藏( A ),每个馆藏的文档都包含与另一个馆藏( B )相关的字段。为什么问题是如何查询该字段?
let doc = "merchant"
let ref = db.collection(doc).whereField("subscribers",arrayContains: Session.current.user!.uid!)
ref
中的值与集合 A 中的参考字段进行比较,就像这样 db.collection("appointment").whereField("merch_ref", isEqualTo: ref).addSnapshotListener { snapshot, error in
if let snap = snapshot {
for item in snap.documents {
print(item.data())
}
}
}
我执行时遇到错误
由于未捕获的异常而终止应用程序 “ FIRInvalidArgumentException”,原因:“不受支持的类型:FIRQuery”
你能指出我正确的方向吗
谢谢
答案 0 :(得分:1)
以下是我如何使用引用类型来查询集合 (node.js):
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();
答案 1 :(得分:0)
您的ref
实际上不是文档引用类型的对象。编译器告诉您这是一个Query类型的对象。它仅包含您定义的查询的所有参数。它实际上没有任何文档数据。
如果要从该查询对象获取匹配的文档,则应遵循documentation中的说明。您将需要执行查询,迭代结果快照,并将这些结果用作比较的基础。