2017-02-04 3 views
0

firebaseデータベースの値を要約する必要があります。firebaseデータベースの値を要約する方法#AskFirebase

注:説明しやすくするために、これは非現実的な単純化されたプロジェクトです。したがって、JSONデータにエラーがある場合はお詫び申し上げます。それは実証目的のためであり、私は私の本当の必要性に適応します。 実際のデータを含む完全なプロジェクトの説明はここにあります:best practize summarize FirebaseDatabase values、しかしあまりにも特定のようです。

複数の車の重量データを収集すると仮定します。

だから、いくつかのサンプルデータは、次のようになります。

weightTable{ 
    weightKey1{ 
    "carKey" : "carOne", 
    "carWeight" : 1.4 
    }, 
    weightKey2{ 
    "carKey" : "carOne", 
    "carWeight" : 1.9 
    }, 
    weightKey3{ 
    "carKey" : "carTwo", 
    "carWeight" : 1.1 
    }, 
    weightKey4{ 
    "carKey" : "carThree", 
    "carWeight" : 1.7 
    } 
} 

私は今、私は唯一の「carKey」でグループ化された全ての重量データの要約を持っている別の「テーブル」を持っていると思います。

だから私は

summTable{ 
    "carOne"{ 
    "weightSum" : 3.3, 
    "cnt" : 2 
    }, 
    "carTwo"{ 
    "weightSum" : 1.1, 
    "cnt" : 1 
    }, 
    "carThree"{ 
    "weightSum" : 1.7, 
    "cnt" : 1 
    } 
} 

を得る "weightSumは" "carWeight" の要約です。

"cnt"は要約されたデータの数です。

は最後に、私はsumTableの概要を表示するには、AndroidアプリやWebページにビューを移入するために使用されているすべての車

totalCarWeight{ 
     "weightSum" : 6,1, 
     "cnt" : 4 
} 

の概要を一覧表示するテーブルを持っていると思います。サマリーの車をクリックすると、この車の詳細なビューが表示され、各重量が収集されます。 サマリーデータは、ベストエフォートベースで最新のものにする必要があります。

考えられる問題は、私が参照してください。

  • デバイスには、ネットワーク接続を持っていないと「weightTable」にデータを追加します。

  • 複数のデバイスが "weightTable"にデータを追加します。

どのようなヒント?

通常のSQLデータベースでは、クエリにサマリーまたはカウント項目を作成するようデータベースに要求することができます。

これはわかりやすく、今すぐお答えください。

Androidまたはjavascriptでのガイダンスが優れています。

答えて

0

"weightKey"が "carKey" equalTo "carOne"で、アプリ内の値の合計がある場所でFirebaseを照会することができます。 AngularFire照会を参照してください

:あなたはまだ他のテーブル( "summTables"、 "totalCarWeight")を必要とする場合、必要となるdocs

:Firebase SDK(ウェブ)についてはdocs

はのソートやフィルタリングのセクションを参照してください「weightTable」に書き込むたびに更新する必要があります。アプリでやってみることもできますし、FirebaseのGoogle Cloud Functionsを使うこともできます。したがって、 "weightTable"に書き込むたびに、他のテーブルを更新する関数を起動します。

FirebaseのGoogle Cloud機能については、Jen Person videoと他の動画をFirebase YT channelに表示してください。

+0

現在、私はあなたが説明したようにこの要約を正確に行います。 しかし私はそれを追加するたびにそれをしなければなりません。 それで私はより良い方法がありました。 ここでの問題は、自分のAPPが接続すると、データベースと接続されているすべてのクライアントへの更新をトリガーする要約を再計算することです。 今、私はクラウド機能を使用して要約を実行します。 しかし、この方法でオフライン機能が失われます... –

関連する問題