Swift 如何在Firebase中查询具有一个值的多个字段?

Swift 如何在Firebase中查询具有一个值的多个字段?,swift,firebase,google-cloud-firestore,Swift,Firebase,Google Cloud Firestore,我是firebase的新手我已经实现了一个示例应用程序,在传输成功后可以互相传输点我还添加了两个名为“发送者名称”和“接收者名称”的字段,但很难根据用户登录获得所有转换我找到了示例方法,只需添加多个where即可,如果两者都是真的,它的工作很好,但这不是我想要的我想要的,或者像下面的SQL这样的例子 SELECT column1, column2, ... FROM table_name WHERE condition1 OR condition2 OR condition3 ...; 有什么

我是firebase的新手我已经实现了一个示例应用程序,在传输成功后可以互相传输点我还添加了两个名为“发送者名称”和“接收者名称”的字段,但很难根据用户登录获得所有转换我找到了示例方法,只需添加多个where即可,如果两者都是真的,它的工作很好,但这不是我想要的我想要的,或者像下面的SQL这样的例子

SELECT column1, column2, ...
FROM table_name
WHERE condition1 OR condition2 OR condition3 ...;
有什么解决办法吗

   func getUserTransition(){
        // process
        /*
         1.get all transition from tm_members sender and receiver by current user login 
         2.
         */
        guard let username = self.userSession?.username else {
            return
        }
        print("username in user session : \(username)")
        COLLECTION_TM_TRANSITIONS_UAT
            .whereField("sender_name", isEqualTo: username)
            .whereField("receiver_name", isEqualTo: username)
            .getDocuments { documentSnapshot, error in
            if error == nil {
                guard let value = documentSnapshot?.documents else { return }
           
                self.tmTransitions = value.map { (queryDocumentSnapshot) -> TmTransition in
                    let data = queryDocumentSnapshot.data()
                    let email = data["email"] as? String ?? ""
                    let is_sender = data["is_sender"] as? Bool ?? false
                    let point = data["point"] as? Int ?? 0
                    let username = data["username"] as? String ?? ""
                    let sender_id = data["sender_id"] as? String ?? ""
                    let receiver_id = data["receiver_id"] as? String ?? ""
                    let created_at = data["created_at"] as? Timestamp
                    let sender_name = data["sender_name"] as? String ?? ""
                    let receiver_name = data["receiver_name"] as? String ?? ""
                    print("username : \(email)")
                    return TmTransition(id: queryDocumentSnapshot.documentID, sender_id: sender_id, receiver_id: receiver_id, username: username, is_sender: is_sender, point: point, email: email,created_at: created_at,sender_name: sender_name,receiver_name: receiver_name)
              
                }
              
            }
            else{
                print("error during fetch data ")
            }
        }
    }

这回答了你的问题吗@马图:那篇文章是关于实时数据库的。这个问题使用CloudFireStore,其中有许多用于或样式查询的选项。它们可能不是传统意义上的,但它们是可以做到的。首先。如果您要添加另一个名为
sender\u receiver
的字段,该字段包含一个数组
[sender\u ui,receiver\u uid]
,然后可以使用以下方法进行查询
ref.whereField(“sender\u receiver”,in:[“uid\u 0”,“uid\u 1”)
@Jay谢谢您的回复,我有了您的想法,我会试试看,谢谢@Jay。很明显,我没有给予足够的重视。除非你具体说明你所指的是哪种服务,否则“Firebase”不会给我打电话。