2017-06-13 29 views
1

私は非常に大規模なプロジェクトに取り組んでいます。最後に、私はAndroidとFirebaseを使いやすさと簡単さのために選択しました。私は、次のように複数の子を持っているつもりです:ここでfirebaseにリレーショナルデータベースを作成するにはどうしたらいいですか?

products 
1 
name: 
"p1" 
2 
name: 
"p2" 


route 
1: 
"xyz" 
2: 
"abx" 

は、1人のユーザーの場合である: ユーザーの更新ルート1、代わりに「XYZ」のプット「ジョン」、そして1名はX1」に更新する必要がある場合'を' p1 'の代わりに使用します。

「ondatachange()」のようなメソッドを使用するためには、プログラマチックにアンドロイドを使用する方法がありますが、私はサーバー側でそれをやりたいのです。私はルート 'x'が更新された製品 'a'がアンドロイドアプリで更新されるべきであるたびに書きたいとは思わない。

firebaseにリレーショナルデータベースを構築するにはどうすればよいですか?

テーブルが2つだけではなく、50以上のキーと値のペアが存在することを覚えておいてください。

+0

複数のデータベース、または複数の子供が1つのデータベース内ではあるのでしょう: コードは次のようなものが見えるでしょうか?リアルタイムデータベースはあなたが記述しているものにうまく対応しませんが、それでも可能です。私は提案をする前に明確にしたいだけです。 –

+0

申し訳ありませんが私の誤植!その「子供たち」はデータベースではありません。複数の子とその複数の子が「app-name」データベースになります。 –

答えて

2

私はあなたがクライアント側で働くすべてのことをしたくないということに同意します! Firebaseのクラウド機能は良い選択です。データベース内のパスへの書き込みに対して関数をトリガし、その後、他の関連するパスに変更を加えることができます。詳細を確認するためにこれらのリソースをチェックアウト:

Getting Started with Cloud Functions for Firebase

GitHub samples

Cloud Functions for Firebase documentation

Writing a Database Trigger

Writing a Cloud Storage Trigger: Part 1

Writing a Cloud Storage Trigger: Part 2

+0

Jen、そのような素晴らしいビデオのFirebaseチームに感謝します!また、非正規化に重点を置いてこのシリーズにリンクしています(https://www.youtube.com/watch?v=WacqhiI-g_o&list=PLl-K7zZEsYLlP-k-RKFa7RyNPa9_wCH2s)。また、クラウド機能を使用して更新を伝播することもできます。 –

+0

ありがとうJen!間違いなく私の開発チームと話し合い、あなたに戻ってきます!あなたは私の質問をupvoteすることができますか? –

+0

確かに、ジョン!それについてさらに疑問がある場合はお知らせください。 –

0

firebase admin sdkまたはfirebase関数を使用して、変更を待機することができます。

exports.routeUpdated = functions.database.ref("route/{id}").onWrite(event => { 
    // read the event value/s you need 
    const id = // id of the product you want to update 
    let updates = {}; 
    //set updates like updates['/name'] = ... 
    admin.database().ref('products/' + id).update(updates).then(() => { 
     //... 
    }); }); 
関連する問題