Как добавить новую пару «ключ-значение» для существующего дочернего элемента в firebase

Я подключил свое приложение для Android к firebase и включил аутентификацию по электронной почте и паролю. Мой текущий статус базы данных выглядит так:

Как добавить новую пару «ключ-значение» для существующего дочернего элемента в firebase

Теперь я хочу добавить дополнительное поле (ключ: «число») для всех пользователей, которые у меня есть, чтобы моя окончательная база данных выглядела так:

Как добавить новую пару «ключ-значение» для существующего дочернего элемента в firebase

поэтому, пожалуйста, скажите мне, как я могу это сделать?

Еще одна важная вещь: я написал код таким образом, что я сначала аутентифицирую их, если их регистрация прошла успешно, я перенаправляю пользователя в новую активность, где они введут этот «ключ» после сбора ключа. Я должен добавить это в пользовательский узел, как показано на вторая картинка.

Итак, пожалуйста, скажите мне, как это сделать?

Вы включили изображение дерева JSON в свой вопрос. Пожалуйста, замените это фактическим JSON в виде текста, который вы можете легко получить, щелкнув ссылку «Экспорт JSON» в дополнительном меню (⠇) ваша консоль базы данных Firebase. Наличие JSON в виде текста делает его доступным для поиска, позволяет нам легко использовать его для тестирования с вашими фактическими данными и использовать его в нашем ответе, и в целом это просто хорошая вещь.

Frank van Puffelen 27.05.2019 19:34
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
1 895
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Чтобы записать значение в базу данных Firebase Realtime, вы должны знать полный путь к этому значению. Так что в вашем случае это означает, что вам сначала нужно загрузить все данные из базы данных, чтобы определить динамические ключи (C76w3..., FjsZ... и т. д.).

Что-то вроде этого:

DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
ref.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for (DataSnapshot snapshot: dataSnapshot.getChildren()) {
            snapshot.getRef().child("key").setValue("hisoka");
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        throw databaseError.toException();
    }
}

Я пробовал это. Я получаю сообщение об ошибке «не могу найти ссылку», и ide предлагает «Переименовать ссылку». Пожалуйста помоги

jayanth 27.05.2019 19:59

На какой конкретной строке / символе кода, который я дал, вы получаете это сообщение?

Frank van Puffelen 27.05.2019 20:33

В этой строке: snapshot.child("key").setValue("hisoka");

jayanth 27.05.2019 22:34

Ага, вижу. Там должен быть getRef(), поскольку у DataSnapshot нет метода setValue(). Обратите внимание, что изучение справочной документации в таких случаях весьма удобно.

Frank van Puffelen 28.05.2019 04:24

Другие вопросы по теме