#java #android #firebase #firebase-realtime-database
#java #Android #firebase #firebase-realtime-database
Вопрос:
у меня есть код, который выглядит так для загрузки данных внутри firebase в реальном времени
это база данных в реальном времени выглядит так, как я использую код ниже:
reference.child("Pending").child(currentDateandTime).child("DataKerja").setValue(tempatKerja);
reference.child("Pending").child(currentDateandTime).child("Alamat").setValue(alamat);
reference.child("Pending").child(currentDateandTime).child("AlamatKtp").setValue(alamatKtp);
reference.child("Pending").child(currentDateandTime).child("Nokontak1").setValue(noKontak1);
reference.child("Pending").child(currentDateandTime).child("Nokontak2").setValue(noKontak2);
reference.child("Pending").child(currentDateandTime).child("KTP").setValue(imageKTP);
reference.child("Pending").child(currentDateandTime).child("Pendukung").setValue(image2);
reference.child("Pending").child(currentDateandTime).child("DataPendukung").setValue (dataNasabah);
и я хочу удалить данные загрузки 1 за пределами дочернего элемента, которые выглядят следующим образом
Итак, last .child(«DataPelanggan») исчез
и когда я пытаюсь удалить это в это
reference.child("Pending").child(currentDateandTime).child("DataKerja").setValue(tempatKerja);
reference.child("Pending").child(currentDateandTime).child("Alamat").setValue(alamat);
reference.child("Pending").child(currentDateandTime).child("AlamatKtp").setValue(alamatKtp);
reference.child("Pending").child(currentDateandTime).child("Nokontak1").setValue(noKontak1);
reference.child("Pending").child(currentDateandTime).child("Nokontak2").setValue(noKontak2);
reference.child("Pending").child(currentDateandTime).child("KTP").setValue(imageKTP);
reference.child("Pending").child(currentDateandTime).child("Pendukung").setValue(image2);
reference.child("Pending").child(currentDateandTime).setValue (dataNasabah);
все остальные файлы исчезли и стали такими ниже
итак, как я могу ее решить?
Комментарии:
1. Пожалуйста, используйте
android-studio
тег только для вопросов о самой среде разработки Android Studio. Для вопросов о программировании на Android в целом используйтеandroid
тег.
Ответ №1:
Ваш код сделал именно то, для чего вы его запрограммировали. Чтобы заменить данные дочернего currentDateandTime
элемента на новые dataNasabah
.
Теперь, чтобы сохранить предыдущие записи и обновить / добавить новое поле, вы используете updateChildren()
, которое предотвращает перезапись предыдущих данных.
Чтобы использовать его, вы передаете HashMap
файл, содержащий значение / поля, которые вы хотите добавить, не затрагивая другие дочерние элементы узла.
Пример фрагмента кода из документов Firebase:
private void writeNewPost(String userId, String username, String title, String body) {
// Create new post at /user-posts/$userid/$postid and at
// /posts/$postid simultaneously
String key = mDatabase.child("posts").push().getKey();
Post post = new Post(userId, username, title, body);
Map<String, Object> postValues = post.toMap();
Map<String, Object> childUpdates = new HashMap<>();
childUpdates.put("/posts/" key, postValues);
childUpdates.put("/user-posts/" userId "/" key, postValues);
mDatabase.updateChildren(childUpdates);
}
Хотя этот код является примером одновременного обновления нескольких дочерних узлов базы данных, поэтому он передает дочерние пути в виде строки в put()
. Но для вашего использования вы можете изменить его на:
Map<String, Object> postValues = post.toMap();
Map<String, Object> childUpdates = new HashMap<>();
childUpdates.put(currentDateandTime, postValues);
reference.child("Pending").updateChildren(childUpdates);
Комментарии:
1. это
Map<String, Object> postValues = post.toMap();
шоу не может разрешить символpost
, я меняю сообщение на данные, которые я хочу отправить?2. но когда я пытаюсь перейти на DataNasabah, toMap () говорит, что не может разрешить tomap в datanasabah
3. и когда я пытаюсь создать метод в DataNasabah, который выглядит так: ` public Map<String, Object> toMap() { return null; }` и я пытаюсь отладить его, если он отображается в firebase на секунду и удаляется сам