Firebase 查詢尋找包含參與者的聊天
背景:
背景:考慮代表一個聊天系統,其中聊天有參與者和聊天項目。目標是查詢「聊天」表,以根據給定的使用者名稱字串檢索具有特定參與者的所有聊天。
初始嘗試:索引限制:Firebase 需要預先定義索引來查詢巢狀路徑,這在處理時可能會變得非常麻煩動態資料。
倒排索引方法:userChatrooms: { john: { chatRoom1: true, chatRoom2: true }, puf: { chatRoom1: true, chatRoom3: true } }
要解決這些限制,建議透過建立映射的「userChatrooms」節點來反轉資料結構使用者進入他們參與的聊天室。這樣可以進行有效的過濾user:
使用倒排索引查詢:ref.child("userChatrooms").child("john")
使用倒排索引結構,找出使用者所有的聊天變得簡單:
Cloud Firestore替代方案:Query query = firestore.collection("chats") .whereArrayContains("participants", username);雲端Firestore 透過其陣列包含運算符為此類查詢提供了更好的支援。這允許直接過濾數組中包含特定值的文件:
以上是如何有效率地查詢 Firebase 或 Firestore 中包含特定參與者的聊天?的詳細內容。更多資訊請關注PHP中文網其他相關文章!