Firestore-查询参考字段

时间:2019-09-12 21:08:30

标签: ios swift firebase google-cloud-firestore

我正在使用Swift和Cloud Firestore数据库开发一个小型iOS应用。

我有一个馆藏( A ),每个馆藏的文档都包含与另一个馆藏( B )相关的字段。为什么问题是如何查询该字段?

  1. 我通过执行简单的查询来获得对 B 的引用
     let doc =  "merchant"

     let ref =  db.collection(doc).whereField("subscribers",arrayContains: Session.current.user!.uid!)
  1. 然后我要尝试的是将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”

你能指出我正确的方向吗

谢谢

2 个答案:

答案 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中的说明。您将需要执行查询,迭代结果快照,并将这些结果用作比较的基础。