2016-12-11 21 views
1

子供の下のFirebaseDatabaseにあるデータをkey:valueのペアとして保存しています。Firebaseで既に保存されているデータの上にデータを保存する方法は?

data1が既に保存されている場合のように、データがプッシュされて保存されているという問題は、data2がその下に保存されることです。私はこれをすでに保存されているデータの上に保存したい。ここで

は、データ構造である:

- branch 
    - child 
     - uniqueKey1: data1 
     - uniqueKey2: data2 

私はこのコードを使用してデータを保存しています:私が欲しいもの

String key = mDatabase.child("branch").child("child").push().getKey(); 

mDatabase.child("branch").child("child").child(key).setValue(data); 

以下の構造である:

- branch 
    - child 
     - uniqueKey2: data2 
     - uniqueKey1: data1 

新しく追加されたデータをすでに保存されているデータの上に保存するには私にお知らせください。

答えて

1

firebaseデータベースでは、ノード内の子ノードは、保存する順序に関係なく、アルファベット順に並べ替えられています。 後で特定の順序で取得する場合は、日付順の追加を考えてみましょう。タイムスタンプ参照を作成することができます。

ここでチェック: How to sort value inside a Firebase child to the rest?

編集:私の答えを書きながら答えと編集した多くの質問が、他の人は、あなたがデータベース内のデータを参照順序を心配べきではありません述べたように、あなただけ気にする必要があり適切な構造を提供してデータを正しく取得します。 私が言ったように、DBの中で子供たちはアルファベット順に並べられていますので、日付順に並べ替えることを主張すれば、それに応じてキーを更新してノード全体を更新する方法を考えてください。

+0

よろしくお願いします。私が 'timestamp'も保存している場合、降順で検索する方法は?最後の1つ目のタイムスタンプを意味しますか? –

+1

タイムスタンプを負のフォーマットで保存することができます –

+0

この回答を確認してください。 http://stackoverflow.com/questions/34156996/firebase-data-desc-sorting-in-android –

0

あなたがしようとしているのは、データ1を更新することです。次に、行うべきことは、
更新するノードの参照を取得します。

DatabaseReference ref = mDatabase.child("branch").child("child").child("data1"); 

次に、子ノードを更新します。私は値が 'Foo'であるdata1の下に子nameがあると仮定しています。そして、あなたはそれを 'Bar'に更新したいと思っています。

Hashmap<String, String> map = new Hashmap(); 
map.put("name","Bar"); 

ref.updateChildren(map); 

ノードを更新する方法です。ノードを完全に置き換えたい場合は、ノードを削除し、removeValue()メソッドを呼び出してデータを再度プッシュします。

+0

いいえ何も削除または更新しようとしていません。私は 'data1'の上に' data2'を追加するだけです。それで全部です! –

+0

私は取得していません。具体的に達成しようとしていることを説明できますか? –

+0

私は本当に間違ったコードと構造の問題については申し訳ありません。編集した質問をご覧ください。 –

1

データを保存する順序は、選択した順序で正しく検索する戦略がある限り重要ではないと思います。 Firebaseは、キーまたは値のいずれかによって順序付けられたデータを取得するためのAPIを提供します。

Work with Lists of Data on Android

あなただけの最後に追加されました最初のレコードを検索したい場合は、あなたのデータに付随するタイムスタンプを置くことができます。コレクションの最後のレコードを取得するメソッドもあります。

+0

さようなら!しかし、私が望む順序でデータを保存する方法はありますか? –

+0

私はあなたができることは、 'child'ノードを完全に置き換え、あなたが望む順序で子が配列されている配列を割り当てることだと思います。 – jaibatrik

+0

'timestamp'を使うと、降順でデータを取り出す方法は?最後の 'タイムスタンプ'のように保存? –

関連する問題