Swift 如何在Firebase中查询具有一个值的多个字段?
我是firebase的新手我已经实现了一个示例应用程序,在传输成功后可以互相传输点我还添加了两个名为“发送者名称”和“接收者名称”的字段,但很难根据用户登录获得所有转换我找到了示例方法,只需添加多个where即可,如果两者都是真的,它的工作很好,但这不是我想要的我想要的,或者像下面的SQL这样的例子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 ...; 有什么
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”不会给我打电话。