# #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 Я пробовал ваше решение, но оно не работает; с дочерними узлами или без них база данных остается пустой