Вопрос:

Запрос данных на базе Firebase для веб

javascript json firebase firebase-realtime-database

2604 просмотра

1 ответ

7212 Репутация автора

Поэтому я создаю музыкальную платформу, используя FireBase, где пользователи могут загружать свои песни. Когда пользователь входит в систему, я сохраняю его данные на узле «usuarios». И когда они загружают песню, я нажимаю на узел «musicas» (потомок усуариев). Таким образом, я знаю, кто загрузил песню.

Но проблема в том, что я хочу получить список всех последних 15 загруженных песен. Как мне это сделать? Я неправильно структурировал свои данные?

Вот что я попробовал:

  var musicsRef = firebase.database().ref('usuarios').orderByChild('musicas');
  musicsRef.on('value', function(snapshot) {
  console.log(snapshot.child('musicas');
});

Вот моя база данных структурирована:введите описание изображения здесь

Автор: Rosário Pereira Fernandes Источник Размещён: 22.08.2016 08:44

Ответы (1)


5 плюса

284387 Репутация автора

Решение

С Firebase (как и в большинстве баз данных NoSQL) вы часто заканчиваете тем, что моделируете свои данные так, как ваше приложение хочет их использовать. Поэтому, если вам нужно найти глобальный список самых последних загруженных песен, вы должны сохранить такой список:

songsByDate
  $pushIdOfSong: true

Вы заметите, что мы не сохраняем реальную ценность в этом списке. Это просто идентификатор каждой песни и trueзначение. Это называется вторичным индексом, поэтому мы объясняем это в нашей документации по созданию масштабируемой структуры данных .

С этой структурой вы можете делать запросы с:

var recents = ref.child('songsByDate').orderByKey().limitToLast(15);
recents.on('child_added', function(snapshot) {
  var key = snapshot.key;
  // load the song by its key
});

Я настоятельно рекомендую прочитать эту статью о моделировании данных NoSQL .

Автор: Frank van Puffelen Размещён: 22.08.2016 08:59
32x32