Значения базы данных Firebase не сохраняются

Я пытаюсь использовать Firebase Admin SDK для сохранения значений в базе данных Firebase в реальном времени, но что бы я ни делал, ни одно из значений не сохраняется. В отличие от руководств, я начинаю с абсолютно пустой базы данных:

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

  • Я подключен к базе данных (проверено с помощью ссылки .info/connected и ref.addValueEventListener)
  • Правила безопасности разрешают как чтение, так и запись
  • Использование учетной записи службы и файл json для нее, кажется, анализируются и загружаются правильно
  • Если я создаю объект корневой ссылки и печатаю его значение, он правильно указывает на URL-адрес базы данных.

В Firestore созданы коллекция и документ, и если я переключусь на базу данных в реальном времени из представления Firestore, в базе данных также будет эта коллекция и документ.

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

Но если я нажму на корневую ссылку, документ и коллекция исчезнут. Я также постоянно вижу «данные» как нулевые. Являются ли данные документом? Поле? Это просто говорит о том, что база данных в целом пуста? Иногда он чередуется между «data: null» и «coconut-xxx: null», что странно.

Я также пытался ссылаться на /telemetry/data и писать в него, но это не сработало. Когда я добавляю CompletionListener в setValue, CompletionListener никогда не вызывается, поэтому соединение зависает или что-то в этом роде?

Мой код:

String url = databaseUrl.getProtocol() + "://" + databaseUrl.getHost();

InputStream stream = getClass().getClassLoader().getResourceAsStream("firebaseCredentials.json");
GoogleCredentials credentials = GoogleCredentials.fromStream(stream);

FirebaseOptions options = new FirebaseOptions.Builder()
                                             .setCredentials(credentials)
                                             .setDatabaseUrl(url)
                                             .build();

FirebaseApp.initializeApp(options);

DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
ref.setValueAsync("12345");

Я также пытался отправить карту, как это делается в учебнике, но это тоже не работает.

Я предполагаю, что единственная другая вещь, которая может быть проблемой, заключается в том, что я делаю это внутри плагина IntelliJ Android Studio. Хотя это маловероятно как проблема.

Любая помощь приветствуется. Спасибо!


person Kiith Nabaal    schedule 13.11.2019    source источник
comment
Хм.. Я смотрю на это приложение. Сейчас похоже, что я использую приложение по умолчанию. Консоль Firebase показывает, что у меня есть два проекта, один из которых — кокосовый. У меня не было добавлено ни одного приложения.. это имеет значение? Однако ни одно из доступных приложений не соответствует тому, что я делаю.   -  person Kiith Nabaal    schedule 13.11.2019
comment
Не разработчик Java, но в Node.js обычно используется «push, update, set» для вставки записей в Firebase в пару ключ-значение, что-то вроде этого firebase.database().ref(root node).push({ ChatStartTime: новая дата().toLocaleString() });   -  person ASP    schedule 13.11.2019
comment
Спасибо за комментарий АСП! setValueAsync — это операция установки, и я также пробовал setValue. Я пробовал нажать один раз, но не обновлять. Я думаю, что если ни set, ни push не работают, это обновление тоже не будет. Я только что попробовал это, но, похоже, это не имеет значения.   -  person Kiith Nabaal    schedule 13.11.2019


Ответы (1)


Я нашел проблему. Я не знаю, как это произошло, но было несоответствие между файлом JSON учетной записи службы в моей папке ресурсов IntelliJ и учетной записью службы, используемой для проекта кокоса...

В любом случае, база данных реального времени работает!

person Kiith Nabaal    schedule 13.11.2019