Я использую Базу данных Firebase Realtime для хранения пользовательских данных для игры. Я хочу реализовать таблицу лидеров на основе наивысшего балла.
Моя текущая структура базы данных выглядит следующим образом:
Код: Выделить всё
{
"users": {
"Guest0009f30": {
"levelContainer": {
"currentLevel": 12,
"highestScore": 1938
}
},
"Guest0009f80": {
"levelContainer": {
"currentLevel": 16,
"highestScore": 1894
}
}
}
}
- Получить 10 лучших пользователей, упорядоченных по наивысшему показателю.
- Получить рейтинг текущего пользователя в таблице лидеров (даже если они не входят в 10 лучших).
Я добавил правило индексирования:
Код: Выделить всё
{
"rules": {
"users": {
".read": true,
".write": true,
"$uid": {
".indexOn": ["levelContainer/highestScore"]
}
}
}
}
Код: Выделить всё
var task = _reference.Child("users")
.OrderByChild("levelContainer/highestScore")
.LimitToLast(20)
.GetValueAsync();
Вопрос
- Каков правильный способ индексации моей базы данных для использования в этой таблице лидеров случае?
- Как я могу запросить базу данных Firebase Realtime, чтобы получить как:
первые N пользователей, так и - ранг текущего пользователя, даже если они находятся за пределами топ-N?
Подробнее здесь: https://stackoverflow.com/questions/797 ... ser-s-rank
Мобильная версия