[英]Get random firebase database entry
我的數據庫中有這樣的用戶:
users
--45jklj4kljfejlk34 // random uid
----id: 1 // I add this manually when creating a user (maybe it helps getting a random user)
----someData: true
--454jkljkljefnd4lk
----id: 2
----someData: true
我想獲得一個隨機用戶,但我不知道如何。 我嘗試過…… 像這樣:
let usersCount = DataService.sharedInstance.DB_USER_COUNT
let rand = Double(arc4random_uniform(UInt32(usersCount))) + 1
let userRef = DataService.sharedInstance.DB_REF_USERS.queryOrdered(byChild: "id").queryStarting(atValue: rand).queryLimited(toFirst: 1))
我從數據庫中獲取usersCount。 在那里,每次添加用戶時,我都會增加數字。
但這是行不通的。 這是我得到的結果:
(/users {
i = id;
l = 1;
sp = 1;
vf = l;
})
有什么建議,我該如何實現?
因此,由於Firebase的工作原理與基於關系的數據庫完全不同,因此冗余看起來是可以接受的,以便快速高效地進行。 因此,我想出了一種對我有效的解決方法。
創建用戶時,將其添加到“用戶”樹中。 另外,我將他添加到“ numUsers”樹中(我很難選擇名稱,對此感到抱歉)。 看起來像這樣:
users
--45jklj4kljfejlk34 // random uid
----id: 1
----someData: true
--454jkljkljefnd4lk
----id: 2
----someData: true
numUsers
--1: 45jklj4kljfejlk34
--2: 454jkljkljefnd4lk
因此,“ numUsers”由一個id
作為鍵,而一個uid
作為值。 每次添加新用戶時,我都會抓取“ usersCount”(之前將其遞增1)並將其用作鍵。
這樣,我可以使用以下方法輕松地抓住隨機用戶:
DataService.sharedInstance.DB_REF_USERS.child("\(rand)").observeSingleEvent(of: .value, with: {(snapshot) in print(snapshot) })
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.