2
我想找到一種方法,我可以在我的應用程序中查詢用戶。例如,如果我的用戶想要搜索用戶以將其添加爲朋友。我想我可以將所有用戶保存在Firebase數據庫中,然後在數據庫中執行查詢,但看起來效率很低(並且必須有一個更簡單的內置方法才能完成)。firebase swift - 用戶查詢
我想找到一種方法,我可以在我的應用程序中查詢用戶。例如,如果我的用戶想要搜索用戶以將其添加爲朋友。我想我可以將所有用戶保存在Firebase數據庫中,然後在數據庫中執行查詢,但看起來效率很低(並且必須有一個更簡單的內置方法才能完成)。firebase swift - 用戶查詢
「.indexOn」是您的解決方案!
如果你構造你的日期如下,你將能夠查詢用戶!在這裏您可以在full_name和reversed_full_name上查詢用戶。你可以提供你想要查詢的任何一個孩子。例如,您可以在人員下添加電子郵件字段,然後在「.indexOn」中添加「電子郵件」!
"people": {
".indexOn": ["_search_index/full_name", "_search_index/reversed_full_name"],
".read": true,
"$uid": {
".write": "auth.uid === $uid",
"full_name": {
".validate": "newData.isString()"
},
"profile_picture": {
".validate": "newData.isString()"
},
"posts": {
"$postId": {
".validate": "newData.val() === true && newData.parent().parent().parent().parent().child('posts').child($postId).exists()"
}
},
"_search_index": {
"full_name": {
".validate": "newData.isString()"
},
"reversed_full_name": {
".validate": "newData.isString()"
}
},
"following": {
"$followedUid": {
".validate": "newData.parent().parent().parent().parent().child('followers').child($followedUid).child($uid).val() === true" // Makes sure /followers is in sync
}
}
}
希望這會有所幫助。以下是從Firebase提供的整個安全規則的鏈接https://github.com/firebase/friendlypix/blob/master/web/database-rules.json
爲什麼效率低下?如果您有用戶列表並且您想執行搜索,則查詢必須由某人進行。魔術師不存在:D – lubilis
你總是可以猜到,如果你是正確的,每次都是O(1) – rigdonmr
我的問題是如果有用戶查詢,就像解析中的一個你可以創建查詢找到一個用戶(使用ID,用戶名或電子郵件)。這是否存在於Firebase中,或者是否需要將所有用戶放在實時數據庫中,然後在此數據庫中進行查詢。 –