我需要能够从Firebase上的数据库中随机选择一些数据。为此,为了避免下载整个数据库,我想创建一个带有由unsigned int表示的键的条目,如下截图所示:
我的问题是,如何检索最后添加的项目的密钥?
我试过了:
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 :(得分:1)
您的查询返回第一个结果,其中包含键1
。您正在寻找queryLimited(toLast: 1)
。
此外,在大多数情况下,您应该avoid numeric, sequential keys in distributed data。