Невозможно сохранить данные в базе данных Firebase, и во время выполнения нет ошибок или предупреждений. - PullRequest
1 голос
/ 12 января 2020

Я видел, что этот вопрос задавался несколько раз, и я просмотрел их все, прежде чем опубликовать вопрос. У меня есть действие kotlin, которое используется для регистрации пользователя. Это имеет два действия, одно из которых заключается в использовании FirebaseAuth для создания нового пользователя, при успешном завершении я сохраняю пароль expcet информации пользователя в FirebaseDatabase. Когда я запускаю код приложения, я вижу, что пользователь создается в консоли Firebase Auth. Но коллекция пользователей не создается в базе данных.
К сожалению, в logcat также нет ошибок или исключений.

private fun saveUserInfo(nickname: String, email: String, progressDialog: ProgressDialog) {
    val currentUserID = FirebaseAuth.getInstance().currentUser!!.uid
    val database = FirebaseDatabase.getInstance()
    val usersRef = database.getReference("users")

    val userMap = HashMap<String, Any>()
    userMap["uid"] = currentUserID
    userMap["nickname"] = nickname
    userMap["email"] = email

    usersRef.child(currentUserID).setValue(userMap)
        .addOnCompleteListener {
            if (it.isSuccessful){
                progressDialog.dismiss()
                Toast.makeText(this, "User created successfully", Toast.LENGTH_LONG)

                val intent = Intent(this, MainActivity::class.java)
                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK)
                startActivity(intent)
                finish()
            } else {
                progressDialog.dismiss()
                FirebaseAuth.getInstance().signOut()
                val message = it.exception!!.toString()
                Toast.makeText(this, "Error: " + message, Toast.LENGTH_LONG)
            }
        }
        .addOnFailureListener {
            progressDialog.dismiss()
            FirebaseAuth.getInstance().signOut()
            val message = it.message.toString()
            Toast.makeText(this, "Error: " + message, Toast.LENGTH_LONG)
        }
}

У меня настроены правила как

    {
  "rules": {
    ".read": true,
    ".write": true
  }
}

Поскольку идентификатор пользователя создается в Firebase Auth I знаю, что соединение работает. Что я мог здесь упустить?

Я пытался

val database = FirebaseDatabase.getInstance()
    val myRef = database.getReference("message")

    myRef.push().setValue("Hello, World!")
        .addOnFailureListener {
            Log.d("TAG", it.message.toString())
        }

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

1 Ответ

1 голос
/ 12 января 2020

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...