Firebase не вставляет данные

# #android #firebase #firebase-realtime-database

Вопрос:

Я создал базу данных Firebase и пытаюсь хранить в ней значения из приложения для Android. Путь к базе данных правильный (см. строку «Журнал»), но я не вижу данных в базе данных, они все еще показывают «имя базы данных-по умолчанию-rtbd:null». Почему?

 val database = FirebaseDatabase.getInstance().reference
Log.d("database", "path: $database");
database.setValue("xyz")
 

Журнал печатает это: путь: https://db-name-default-rtdb.firebaseio.com

Комментарии:

1. Вы пытались подключить прослушиватель к операции setValue (), чтобы посмотреть, не пойдет ли что-то не так?

2. да, как addOnSuccessListener, так и addOnFailureListener, ни один из них не вызывается

3. Если ни один из этих методов не срабатывает, скорее всего, на устройстве пользователя нет подключения к Интернету.

Ответ №1:

База данных Firebase в реальном времени-это структурированная база данных в формате JSON, в которой у вас есть ключ и значение. Теперь вы пытаетесь установить некоторое строковое значение в корень базы данных, что недопустимо.

Итак, вам нужно получить ссылку не в корне вашей базы данных, а по какому-то пути, а затем задать значение для этой ссылки. Пример фрагмента:

 DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
rootRef.child("cat").child("name").setValue("Kitty");
 

Комментарии:

1. Насколько я знаю, вы можете setValue() призвать любого DatabaseReference , включая того, кто находится в корне. Может быть необычно хранить одно значение в базе данных, но это возможно, поэтому я не думаю, что это объясняет проблему, с которой сталкивается OP.

2. Поскольку мы задаем значение a DatabaseReference для дочернего элемента с именем name , это будет пара ключ-значение name = Kitty , вложенная в cat объект.

3. @IvanTaranov Я пробовал ваше решение, но оно не работает; с дочерними узлами или без них база данных остается пустой