2017-01-16 7 views
0

Firebaseをデータベースとして使用するHTML/JavaScriptアプリケーションを作成しています。firebaseデータのフィルタリングと結果の注文

私のデータは多少このように構成されています

steps/ 
- GUID 
-- tripId 
-- name 
-- description 
-- order 
-- launchDate 

私はtripIdは(変数で渡された)特定の値と一致した段階から任意の項目を選択します。私はの注文をに降順で並べ替えるようにしたい。

私はT-SQL型構文の方が使いやすいので、リアルタイムデータベースの世界では混乱しています。

ここに、私のコードがどのようになっているかのスニペットがあります。

var steps = function readSteps(format, tripId) { 
    var stepsRef; 
    stepsRef = firebase.database().ref('steps/'); 
    stepsRef.orderByChild('order').on('value', function (response) { 
     // DO SOME LOGIC HERE WITH 'response' DATA 
    }); 
} 

私はこれらの結果をフィルタリングする方法がわかりませんし、降順ソートを簡単に行う方法もありません。 注文は整数です。

答えて

2

オーダー42のすべての手順を取得するため、あなたが照会したい:

stepsRef = firebase.database().ref('steps/'); 
stepsRef.orderByChild('order').equalTo(42).on('value', function (snapshot) { 
    snapshot.forEach(function(stepSnapshot) { 
     console.log(stepSnapshot.key, stepSnapshot.val()); 
    }); 
}); 

しかし、あなたはいつもオーダーするためのステップを調べることになるだろう場合、あなたはJSONをモデリングする方がいいでしょう異なっ:

orderSteps 
    order42 
    step1: ... 
    step2: ... 
    step3: ... 
    order43 
    step1: ... 
    step2: ... 

これは、クエリを必要とせず、注文の手順を取得することができます:

stepsRef = firebase.database().ref('orderSteps/order42'); 
stepsRef.on('value', function (snapshot) { 
    snapshot.forEach(function(stepSnapshot) { 
     console.log(stepSnapshot.key, stepSnapshot.val()); 
    }); 
}); 

あなたがは、子プロパティでこの結果を注文したい場合は、それはなるだろう:私はNoSQL data modelingを読んでのNoSQLデータベースでモデリングデータについての詳細を学ぶためにFirebase for SQL developersを見てお勧めします

stepsRef.orderByChild("field").on('value', function (snapshot) { 

+0

私の例がちょっと混乱しているかもしれないことが分かりました。 orderはあらかじめ指定したソート順です。私はtripIdにマッチさせようとしています。 orderByはequalToを探している "フィールド"を指示するように見えるので、ソートとクエリをどうすればいいですか? –

+0

2番目のJSON構造のプロパティの注文方法のスニペットを追加しました。最初のJSON構造はそれを許可しません。なぜなら、Firebaseデータベースクエリには1つの 'orderBy'句しか含めることができないからです。 http://stackoverflow.com/questions/26700924/query-based-on-multiple-where-clauses-in-firebaseを参照してください。 –

関連する問題