我正在childByAutoId()用来生我的孩子.每个孩子看起来像:
{
user_id: 1
}
Run Code Online (Sandbox Code Playgroud)
我希望得到最近添加的10个,按时间DESC排序.最简单的方法是什么?
我有这个用Swift编写的函数来获取排行榜,然后将其显示给用户:
@IBAction func onShowLeaderboardTapped(_ sender: Any) {
let leaderboardDB = FIRDatabase.database().reference().child("scores").queryOrderedByValue().queryLimited(toLast: 5)
leaderboardDB.observeSingleEvent(of: .value, with: { (snapshot) in
print("leaderboard snapshot:" ,snapshot)
}, withCancel: nil)
}
Run Code Online (Sandbox Code Playgroud)
问题是,当我获取它时,它会给我以下列表:
Ben = 9;
Gabriela = 12;
Ivailo = 7;
Petar = 10;
Vania = 10;
Run Code Online (Sandbox Code Playgroud)
它向我展示了前五个玩家,但随后按字母顺序列出了它们.由于这不是一个大问题,我想知道是否有办法按价值排序.
这些是规则:
{
"rules": {
".read": "auth != null",
".write": "auth != null",
"scores": {
".indexOn": ".value"
}
}
}
Run Code Online (Sandbox Code Playgroud)
数据库的组织如下:
matchrooms:
users:
scores:
> Ben: 9
> Dimitar: 7
> Gabriela: 12
> Ishest: 6
> Ivailo: 7 …Run Code Online (Sandbox Code Playgroud) 我正在使用Firebase和Alamofire,AlamofireImage将imageURL数据缓存在内存中并上传ImageShack.
我坚持创建降序查询尝试做和搜索,但我找不到可能的描述对我来说.这是我在Firebase上的测试ref_post.
childByAutoId()
- userUid
- imageUrl
- 时间戳(我用这个创建了)
*使用NSDate().formattedISO8601这是最好的方式还是你可以建议我基本上处理它?
如何在Firbase IOS/Swift中进行降序查询.这是我的viewDidLoad:
let query = DataService.ds.REF_POSTS.queryOrderedByChild("timestamp")
query.observeEventType(.Value, withBlock: { snapshot in
if let snapshots = snapshot.children.allObjects as? [FDataSnapshot] {
self.posts = []
for snap in snapshots {
if let postDict = snap.value as? Dictionary<String, AnyObject> {
print(postDict)
let post = Post(imageUrl: postDict["imageUrl"]! as? String, username: DataService.ds.REF_USERS.authData.uid)
self.posts.append(post)
}
}
self.tableView.reloadData()
}
})
Run Code Online (Sandbox Code Playgroud)