2016-08-22 11 views
1

私はfirebaseを使って音楽プラットフォームを構築しています。ここでユーザーは自分の曲をアップロードできます。ユーザーがログインすると、「usuarios」ノードにデータが保存されます。そして、彼らが曲をアップロードするとき、私は "musicas"ノード(usuariosの子)に行きます。 この方法で、誰がその曲をアップロードしたのか分かります。ウェブ用firebaseのデータを照会

しかし、問題は次のとおりです。最後にアップロードされた15曲すべてのリストを取得したい。それ、どうやったら出来るの?自分のデータを間違って構造化しましたか?ここで

は、私が試したものです:

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

は、ここに私のデータベースは、構造化です:あなたは、多くの場合、アプリを消費したい方法を、あなたのデータをモデル化してしまう(ほとんどのNoSQLデータベースと同様)Firebaseでenter image description here

答えて

5

それ。あなたが最近アップロード曲のグローバルリストを見つける必要がある場合、あなたはそのようなリストを維持する必要がありますので:

songsByDate 
    $pushIdOfSong: true 

あなたは私たちがこのリストに真の価値を維持していないことに注意しましょう。それは各曲のIDとtrueの値です。これはセカンダリインデックスと呼ばれ、コマンドはexplain it in our documentation on creating a scalable data structureです。あなたが照会することができる場所でその構造により

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 data modelingにこの記事を読んでお勧めします。

関連する問題