2017-05-23 5 views
0

アンドロイドデバイス上にあるfirebaseデータベースのオフラインバージョンをオンラインバージョンとマージして、特定のルートの下にオフラインで追加されたノードが、追加された時間に関係なく、オンラインバージョンのノード。オフラインFirebaseデータベースのバージョンとオンラインのものをマージする方法

例:

場合(ルートx)は順番に次のノードを有している:オフラインバージョンは、ノードCを追加した場合(a、b)は、次いで、オンラインバージョンは、その後、注文の両方をマージした後、ノードDを添加(a、b、c、d)になります。私はどのように注文(a、b、d、c)を達成することができますか?

+0

ここで大きな問題はなぜ重要なのでしょうか?適切な構造では、子ノードとして作成されたノードがいつ順番を決定するかは問題ではありません。 – Jay

+0

@Jay私はチャットアプリケーションを実装しているので。したがって、ユーザーがオフラインでメッセージを送信してオンラインになった場合、メッセージはルートノードの下部にない他のメッセージの間に挿入されるため、リストを表示するたびに何らかの方法でリストをソートする必要があります他のユーザーにメッセージを表示して下部に表示させる。 – mrboieng

+0

これは、**メッセージ**をサーバーに送信したときのタイムスタンプを追跡する問題ではありませんか? – Flater

答えて

1

これはデフォルトでFirebaseに発生しています。オフラインでアプリを変更すると、オンラインに戻ると、その期間に加えられたすべての変更が、変更のデータと時間に従ってFirebaseサーバで更新されます。あなたのコード行を使用することができます。このオプションを有効にするには

FirebaseDatabase.getInstance().setPersistenceEnabled(true); 

はそれがお役に立てば幸いです。

+0

はい、わかります。しかし、上記の私の質問で述べたように、私はノードを挿入日付(a、b、c、d)で並べ替えるのではなく、どうすれば(a、b、d、c)にすることができますか? – mrboieng

+0

あなたはそれを達成できません。 Firebaseデータベースでは、上で説明したように子が追加されます。アプリケーションに表示したい場合は、 'orderByChild'、' orderByKey'、 'orderByValue'のようなFirebaseで提供されるメソッドの1つを使って、好きなようにそれらを並べ替えることができます。 –