Получение максимальных значений из базы данных Firebase - PullRequest
0 голосов
/ 13 февраля 2020

Я делаю игру в JavaScript. Я хочу сохранить результаты (с именами игроков) в Firebase Databse. Вот структура моей базы данных, но она может быть изменена, если это необходимо:

My database.

Как я могу получить и сохранить в массиве, то есть 3 из лучших результатов и принадлежащих им имен? Вот часть моего кода, где я сохраняю оценки и пытаюсь их получить:

function writeUserData(name, score) {
    firebase.database().ref("scores/").push({
        name: name,
        score: score,
    });
}

var bestScores = {};

var scoresRef = database.ref("scores");
scoresRef.orderByValue().limitToLast(3).on("value", function(snapshot) {
    snapshot.forEach(function(data) {
      bestScores[data.key] = data.val();
    });
});

1 Ответ

0 голосов
/ 13 февраля 2020

Вы упорядочиваете узлы под scores на основе значения дочернего свойства, поэтому в этом случае вам нужно использовать orderByChild, а не orderByValue.

var scoresRef = database.ref("scores");
scoresRef.orderByChild("score").limitToLast(3).on("value", function(snapshot) {
    snapshot.forEach(function(data) {
      console.log(data.key); // "-M-...."
      console.log(data.val().name); // "Anrzej"
      console.log(data.val().score); // 11
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...