Я пытаюсь сохранить информацию о пользователях в базе данных firebase в реальном времени, но она работает не так, как я ожидал. Это мой код для сохранения в БД

   FirebaseDatabase.getInstance().getReference().child("FYP").push().child("Name").setValue(name);
    FirebaseDatabase.getInstance().getReference().child("FYP").push().child("Job").setValue(job);
    FirebaseDatabase.getInstance().getReference().child("FYP").push().child("Number").setValue(number);

Взамен я получаю 3 «уникальных» дочерних элемента, которые содержат один фрагмент данных. Я хочу, чтобы один ребенок держал все 3 части информации. Извините, если не объяснил идеально. Любая помощь приветствуется.

0
Andrew Lennox 22 Фев 2021 в 01:49

1 ответ

Лучший ответ

Как сказано в ссылке, которую я предоставил в комментариях "". Таким образом, чтобы гарантировать получение только одного нового уникального ключа, вы должны вызвать push() только один раз:

DatabaseReference ref = FirebaseDatabase.getInstance().getReference().push()
ref.child("FYP").child("Name").setValue(name);
ref.child("FYP").child("Job").setValue(job);
ref.child("FYP").child("Number").setValue(number);

Или (как одна операция:

DatabaseReference ref = FirebaseDatabase.getInstance().getReference().push()
Map<String, Object> values = new HashMap<>();
values.put("Name", name);
values.put("Job", job);
values.put("Number", number);
ref.setValue(values);

Преимущество последнего в том, что это одна операция записи, поэтому запись всех свойств либо завершится успешно, либо завершится ошибкой как одно целое.

0
Frank van Puffelen 21 Фев 2021 в 23:32