2016-09-26 39 views
1

我需要能夠從Firebase上的我的數據庫中隨機選擇一些數據。對於這一點,以避免下載整個數據庫,我想通過一個unsigned int就像這個截圖所示的鍵創建條目:從Firebase中的最後一個孩子處獲得密鑰

enter image description here

我的問題是,我怎麼能檢索關鍵最後一個項目的添加?

我想:

ref.queryOrderedByKey().queryLimited(toFirst: 1).observeSingleEvent(of: .value, with: { [unowned self] snapshot in 
    let id: UInt64 
    if snapshot.exists(), let child = snapshot.children.nextObject() as? FIRDataSnapshot { 
     id = UInt64(child.key)! 
    } else { 
     id = 1 
    } 
}) 

UInt64(child.key)!,不管我用queryLimited(toFirst:)queryLimited(toLast:),總是返回1

我該怎麼辦錯了嗎?

+0

似乎問題來自'observeSingleEvent'。當使用'observe'代替時,我得到預期的密鑰。 – Nico

回答

1

您的查詢返回第一個結果,其中包含鍵1。您正在尋找queryLimited(toLast: 1)

此外,在大多數情況下,您應該avoid numeric, sequential keys in distributed data

+0

正如我所說,即使'queryLimited(toLast:1)'它仍然返回1而不是2.我知道有一個數字順序鍵是不是一件好事,但我沒有找到另一種方式,然後才能夠隨機從Firebase中檢索數據。 – Nico

相關問題