簡體   English   中英

獲取隨機Firebase數據庫條目

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM