База данных Firebase в реальном времени сохраняет данные, но не отображает их на консоли в flutter

# #firebase #flutter #firebase-realtime-database

Вопрос:

Я работаю над приложением, для которого требуется база данных в реальном времени. Firebase отлично работает с приложением. База данных в реальном времени доступна через http post и get и заставляет базу данных firebase обновлять свои данные на консоли.

Проблема возникает, когда я пытаюсь изменить данные с помощью функций flutter, предоставляемых библиотекой.

     final firebaseRef = FirebaseDatabase.instance.reference().child("Items");

    firebaseRef.set("hi");
    firebaseRef.once().then((DataSnapshot snapshot) {
      print('Data : ${snapshot.value}');
    });
 

Когда я пытаюсь использовать функции выше, данные кажутся доступными, и консоль выводит данные: привет, но они не отображаются на консоли firebase, когда я проверяю ее в Интернете.

Любая помощь приветствуется, я не могу найти никакой информации, которая может помочь. Я проверил свою настройку 20 раз и она правильная, открыт для любых предложений.

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

1. Похоже, ваше приложение не может подключиться к серверу Firebase. В такой ситуации клиент Firebase сохраняет в кэше любые локальные события и запускает для них обычные события, но он сможет синхронизировать эти изменения с сервером только после того, как снова установит соединение. Если вы не можете определить, подключен ли клиент, посмотрите на firebase.google.com/docs/database/android/…

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

Ответ №1:

Я разобрался в проблеме с помощью Фрэнка ван Пуффелена, спасибо, чувак. Проблема заключалась в том, что база данных Firebase в режиме реального времени не была подключена к приложению, и все результаты, которые я получал, кэшировались на устройстве.

В случае, если вы столкнетесь с подобной проблемой, проверьте, подключена ли база данных с помощью этой части документации. https://firebase.google.com/docs/database/android/offline-capabilities#section-connection-state

В моем случае причина, по которой он не был подключен, заключалась в том, что при обращении к любой базе данных в реальном времени на flutter, находящейся за пределами Центральной Америки, вам необходимо указать URL-адрес базы данных, найденной в консоли firebase, в своем коде. Как таковой:

 final firebaseRef = FirebaseDatabase(
        databaseURL:
            "https://yourfirebaseproject.europe-west1.firebasedatabase.app/")
    .reference()
    .child("Items");
 

Я надеюсь, что этого достаточно, чтобы решить вашу проблему.