查询firebase for web上的数据

Ros*_*des 2 javascript json firebase firebase-realtime-database

所以我正在建立一个使用firebase的音乐平台,用户可以上传他们的歌曲.当用户登录时,我将他们的数据保存在"usuarios"节点上.当他们上传一首歌时,我会推送到"musicas"节点(usuarios的孩子).这样,我知道是谁上传了这首歌.

但问题是:我想获得所有最近上传的15首歌曲的列表.我怎么做?我的数据结构错了吗?

这是我试过的:

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

这是我的数据库结构:在此输入图像描述

Fra*_*len 5

使用Firebase(与大多数NoSQL数据库一样),您通常最终会根据应用程序使用它的方式对数据进行建模.因此,如果您需要查找最近上传的歌曲的全局列表,您应该保留以下列表:

songsByDate
  $pushIdOfSong: true
Run Code Online (Sandbox Code Playgroud)

您会注意到我们在此列表中没有保留真正的价值.它只是每首歌的ID和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
});
Run Code Online (Sandbox Code Playgroud)

我强烈建议阅读有关NoSQL数据建模的这篇文章.