Как я могу поместить данные за пределы дочернего элемента в firebase, у меня проблема выглядит так

#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 на секунду и удаляется сам