私のアプリでは、保存ボタンをクリックすると2つの異なる場所にある2セットのデータをpush()
で作成する必要があります。 idが必要です。同じメソッドの2番目のpush()は動作しません
私はfirst
のために得た結果は、私が期待どおりにしたが、second
のため、代わりにsecond/<userId>/<key>/<keySecond>/children
を作成するので、私はこれを取得
String userId = auth.getCurrentUser().getUid().toString();
DatabaseReference reference = FirebaseDatabase.getInstance().getReference();
DatabaseReference firstDatabaseRef = reference.child("first");
DatabaseReference secondDatabaseRef = reference.child("second").child(userId);
String key = firstDatabaseRef.child(userId).push().getKey();
First first = new First(firstAmount,key,firstName);
Map<String, Object> firstValues = first.toMap();
String keySecond = secondDatabaseRef.child(key).push().getKey();
Second second = new Second(secondName,secondAmount,keySecond,key);
Map<String, Object> secondValue = second.toMap();
Map<String, Object> childUpdates = new HashMap<>();
childUpdates.put("/first/" + userId + "/" + key, firstValues);
childUpdates.put("/second/" + userId + "/" + key + "/" + keySecond, secondValue);
reference.updateChildren(childUpdates);
をFirebaseガイドのサンプルコードに続き、第2のプッシュを追加しました:
"second" : {
//userId
"5TQLPlGf4mbcBRKesQwR30fH1L22" : {
//key
"-KL1030IywlNpkTGC7mU" : {
"secondAmount" : "147",
"Key" : "-KL1030IywlNpkTGC7mU",
"secondName" : "secondName",
"keySecond" : "-KL1030PZlHqD_asSR_8",
}
}
}
代わりの方法によりkeySecond
に記録されている別の固有のID、最終子どもを持つ、彼らはすべてのキーに直接追加されます。 key
にはすべてkeySecond
が必要なので、これは受け入れられません。 私は自分の問題を正しく説明してくれることを願っています。 私が間違っていることを教えてください。 私のコードを変更するか、データ構造を完全に再考すべきですか?
本当にありがとうございます。私はあなたの提案をしましたが、私はまったく同じ結果を得ています。 – Ramtin
@フランク:あなたの解決策は、存在しない問題を解決すると思います。 'childUpdates'の2つの子は' first'と 'second'にあります。彼らの価値は重複しないのですか? –
ああ、そうですね。いいキャッチ!私はそれを完全に見落とした。ハッシュマップをスキャンすることに戻る... –