Индексирование данных в моих правилах базы данных Firebase в реальном времени на основе вложенного значения - PullRequest
0 голосов
/ 30 января 2019

У меня есть следующее дерево JSON из моей базы данных реального времени:

{
  "old_characters" :
  {
      "Reptile" : {
        "kick" : 20,
        "punch" : 15
      },
      "Scorpion" : {
        "kick" : 15,
        "punch" : 10
      },
      "Sub-zero" : {
        "kick" : 30,
        "punch" : 10
      }
  },
  "new_characters" : {
    //...ect
  }
}

Можно ли установить правила в моей консоли Firebase, чтобы я мог индексировать свои данные на основе символа с наибольшим значением удара?

Ограничения:
- character_name являются динамическими.
- Key "Удар" является статическим, но его value является динамическим.

Результат должен быть следующим:

  1. Первый минус (удар 30)
  2. Второй рептилия (удар 20)
  3. Скорпион третий (удар 15)

1 Ответ

0 голосов
/ 30 января 2019

То, что вы хотите, кажется довольно простым запросом Firebase к свойству kick:

var ref = firebase.dababase().ref('old_characters');
var query = ref.orderByChild('kick');
query.once(function(snapshot) {
  snapshot.forEach(function(characterSnapshot) {
    console.log(characterSnapshot.key);
    console.log(characterSnapshot.child('kick').val());
  });
});

Вы заметите, что это печатает результаты в порядке возрастания.Вы можете:

  • либо сторнировать результаты на стороне клиента
  • , либо добавить инвертированное свойство с -1 * score к каждому символу и затем упорядочить этот

Чтобы узнать больше об инвертировании / сортировке по убыванию, взгляните на некоторые из этих предыдущих вопросов:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...