私はデータベースとしてFirebaseを使用してリーダーボードアプリを作成しています。私は古い学校のSQLのバックグラウンドから来たので、この新しいnoSQLタイプのデータベースはデータベースのキーと参照の不安を与えています。Firebaseリーダーボード、最適なインプリメント。 SQL結合とorderby
メンバーがある各グループには、さまざまなテストのスコアがあります。特定のテストのスコアが順番に表示されるグループのデータを取得する最も効率的な方法は何ですか。 SQLではこれは明らかにjoinとorderbyを使用することは自明ですが、これまでのFirebaseのドキュメントでは、効率的にクエリを実行して結合データのブロックを取得する方法を試すことができません
私の現在解決策は以下の通りですが、クライアント側ですべての並べ替えを実行する必要があります。私は現在、グループのすべてのユーザーを取得し、各ユーザーのテストスコアの個々のレコードを取得するために繰り返します。私は、日付にかかわらず、与えられたテストのために単一の最高得点を取得する必要があります。
var testName = 'test1';
var scores = firebase.database().ref('/groupMembers/' + 'TestGroup').once('value').then(function(snapshot) {
console.log(snapshot.val());
for(var user in snapshot.val()){
//...query the database for each separate users score on test1
}
//sort the test scores here on client side js
});
データベース設計のヒントは、どちらもうまくいきません。私は、あなたは間違いなく正しい道を下って行くと思います
groupMembers{
TestGroup{
user1 : true
user2 : true
}
}
testScores{
user1{
test1{
date : 11/04/2016
score : 90
}
test1{
date : 05/07/2016
score : 100
}
test2{
date : 11/06/2016
score : 50
}
}
user2{
test1{
date : 15/04/2016
score : 70
}
test2{
date : 05/07/2016
score : 80
}
test2{
date : 11/10/2016
score : 50
}
}
}
おかげ
華麗これは私がのためにのために目指していたものです! –