Firebase добавляет новый ребенок с указанным именем

Это моя база данных

введите описание изображения здесь

Я хотел бы добавить новых пользователей в базу данных, поддерживая этот формат. Я пробовал это:

   //Store data in database
    Firebase usersRef = ref.child("Users");
    Map<String, String> userData = new HashMap<String, String>();

    userData.put("Nombre", name);
    userData.put("Password", pass);
    userData.put("Confirmed", "FALSE");
    userData.put("Email", mail);

    usersRef.setValue(name);
    usersRef = ref.child("Users").child(name);
    usersRef.setValue(userData);

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

Ответы

Ответ 1

Это происходит потому, что вы используете:

Firebase usersRef = ref.child("Users");
usersRef.setValue(name);

Таким образом вы вытащите значение в url/Users, удалив предыдущее значение.

Проверьте doc:

Использование setValue() перезапишет данные в указанном месте, включая любые дочерние узлы.

Чтобы добавить нового пользователя, не удаляя предыдущий, просто удалите эту строку:

//usersRef.setValue(name);

Таким образом вы вытащите значение в url/Users/myName без переопределения других значений.

Ответ 2

Пожар базы данных Firebase

[FirebaseDatabase mydb =][2] FirebaseDatabase.getInstance();
DatabaseReference mDatabase = mydb.getReference().child("Dealers").child(dealerId).child("Stock").child(stockAddDate);

Map<String, String> userData = new HashMap<String, String>();

userData.put("Product_Name", productName);
userData.put("Holding_Stock", holdingStock);
userData.put("Primary_Stock", primaryStock);
mDatabase.push().setValue(userData);

Просто используйте "PUSH" перед setValue.

Ответ 3

Это сработало для меня. Я использую класс модели вместо Hash

mFirebaseDatabase.child(name);
mFirebaseDatabase = mFirebaseDatabase.child(name);
FirebaseDatabase.setValue(name);
FirebaseDatabase.setValue(user);