Проблема с базой данных Flutter — Firebase в реальном времени

#flutter #firebase-realtime-database

# #флаттер #firebase-realtime-database

Вопрос:

Я недавно приблизился к миру flutter, и теперь у меня проблема, на практике мне нужно записывать во время первой записи данных в базу данных реального времени.

Я создал функцию void (я уже делал ассоциацию final databaseReference = FirebaseDatabase.instance.reference(); раньше.

Это функция

 void writeDB() async{
    User user = await _firebaseAuth.currentUser;
    FirebaseDatabase.instance.reference().child('user').equalTo(user.uid);
    databaseReference.child('user').set({
      'email': FirebaseAuth.instance.currentUser.email,
      'name': "",
      'nick': "",
      "score": "0"
    });
  }

 

И это функция входа :

   Future<String> signIn(String email, String password) async {
    UserCredential result = await _firebaseAuth.signInWithEmailAndPassword(
        email: email, password: password);
      writeDB();
    User user = result.user;
    return user.uid;
  }
 

Система регистрации и входа в систему с firebase работает нормально, но база данных не записывается

Любая помощь?

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

1. какие правила firebase вы используете?

2. { «rules»: { «.read»: «true», «.write»: «true» } }

3. вы получаете какую-либо ошибку?

4. нет, он просто ничего не записывает, я также попытался добавить ожидание

5. выполните `print(FirebaseAuth.instance.CurrentUser.email)

Ответ №1:

Похоже, вы используете новую версию firebase auth. currentUser Свойство не возвращает a Future , попробуйте выполнить следующее:

 void writeDB() async{
    User user =  _firebaseAuth.currentUser;
    await databaseReference.child('user').set({
      'email': FirebaseAuth.instance.currentUser.email,
      'name': "",
      'nick': "",
      "score": "0"
    });
  }
 

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

1. Я пытался, как вы мне сказали. это все равно не сработает

2. Добавьте точку останова внутри метода writeDB()

3. Сделано, ничего не изменилось

4. попробуйте void writeDB() async{ await databaseReference.child('user').set({ "score": "0" }); }

5. В методе входа выполните печать (result.user)