2016-07-16 10 views
2

この問題の管理方法を教えてもらうための良い文書はまだありません。誰かがこの問題について参考にできる指針はありますか?Firebase Storageとデータベースを同期させるにはどうすればいいですか?

Androidアプリの場合、リアルタイムのデータベースと一緒にGoogle Firebase Storageを使用し始めました。ファイルのアップロードとデータベースの更新が正しい順序で行われるようにする方法について質問があります。

以前は、オーディオファイルを文字列にエンコードしていましたが、これを他の関連データと共にFBデータベースにアップロードして、一貫性を確保するためにハッシュマップとして使用しました。格納されている関連データは、ユーザがオーディオにアクセスできるもの、オーディオがデータベースに格納されているパスなどに関するPOJOです。

私の新しいセットアップではまず、オーディオファイルをFBストレージにアップロードし、ファイルがアップロードされると、関連するデータのFBデータベースの更新をトリガーします。データベースリスナーが完了を示すと、アプリは別のアクティビティに移動します。

この2つのステップのプロセスが不安定であることが懸念されます(ユーザーは両方のタスクが完了する前にアクティビティを離れる、ストレージのアップロードが中断され、データベースの更新は行われませんなど)。データベース情報が更新されていない場合、他のユーザーには、オーディオファイルがオンラインであることが通知されず、データベースに格納されている参照ファイルのパスがないことになります。

新しいGoogle Firebaseでストレージとデータベースの同時アップロードを正しく構成するにはどうすればよいですか?

おかげで、 アンディ

+0

保存しているデータの例と、同期していない場合の状況を教えてください。 –

+0

@ cricket_007上記のテキストを更新しました。 - 保存されたデータは、ファイルにアクセスできるユーザー、ユーザーがアップロードしたユーザー、ファイルのパスを追跡するPOJOです。また、特定のユーザーに、アクセス可能なファイルがアップロードされたことを通知するためにも使用されます。ファイルがアップロードされていてもデータベースが更新されていない場合、オーディオファイルへのファイルパスが失われる可能性があり、ユーザーは次のファイルをアップロードする順番にアプリケーションが失われる可能性があります。 – aterbo

+0

こんにちは、この問題を管理する方法を教えてもらうための良い文書はまだありません。誰にも何か提案はありますか? – aterbo

答えて

2

このための固体の答えはまだ存在しない理由はわかりません。とにかく、私は非常によく似た問題に直面し、最終的には完了ブロックを使用して入れ子になった更新プログラムに頼っていました。

最近、Firebaseはクラウド機能を導入しました。私はこれを利用して、アップロードされたファイルを見てから、クラウド機能を使ってFBデータベースにメタデータエントリを作成します。

基本的に、私はchildByAutoId()を使用して、ファイルに名前を付けるためのキーを生成します。たとえば、プロフィール画像は「gs:// bucket-id/profile_pictures/somerandomkey .jpeg」に保存されます。次に、ファイル名のキーを利用してクラウド機能を持つFBデータベースにメタデータエントリを作成します。

もっと良い方法があるかどうかわかりませんが、クラウド関数を使用することは入れ子になった更新アプローチよりも優れたアプローチのようです。

0

Firebase Storageを使用して画像をアップロードすることができます。成功すると、その画像のダウンロード可能なURLが得られます。次に、そのイメージURLを含むカスタムオブジェクトにすべての値を置き、そのオブジェクトをFirebaseのRealTimeデータベースに保存します。 また、RealTime Databaseからオブジェクトを取得することで、イメージURLを使用できます。

関連する問題