【问题标题】:Unable to store data into firebase database and during run time there are no errors or warning无法将数据存储到 firebase 数据库中,并且在运行时没有错误或警告
【发布时间】:2020-01-12 03:24:56
【问题描述】:

我看到这个问题被问了多次,我在发布问题之前查看了所有问题。我有一个用于注册用户的 kotlin 活动。这有两个活动,一个是使用 FirebaseAuth 创建新用户,成功完成后,我将用户信息和密码存储在 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 中创建了用户 ID,我知道连接正常。我可能会在这里遗漏什么?

我试过了

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

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

这也不起作用。我确实使用了安卓工作室助手并确保数据库已连接。

【问题讨论】:

  • 是否触发了addOnCompleteListeneraddOnFailureListener 回调?我不知道 Kotlin,但我要做的是检查 currentUserID 的值是否正确。如果没问题,那么尝试一个简单的setValue("test") 而不是 HashMap,看看它是否有效。
  • 没有崩溃或堆栈跟踪?
  • 当我在其中设置断点时,没有触发任何回调。也没有崩溃或堆栈跟踪
  • setValue(test) 也不起作用
  • currentUserID 的值是多少?你可以登录并查看它吗?您是否等待注册完成后再进行saveUserInfo?你确定你真的打电话给saveUserInfo吗?

标签: android firebase kotlin firebase-realtime-database


【解决方案1】:

经过六个小时的调试和阅读所有建议。我遇到了一个答案,解决方案是重新启动笔记本电脑。我没有认真对待这个答案,但这确实解决了问题。对我来说,firebase 数据库连接中似乎存在一个错误,该错误已发布以在重新启动后能够重新连接。

【讨论】:

    猜你喜欢
    • 2019-04-03
    • 2013-10-20
    • 1970-01-01
    • 1970-01-01
    • 2016-02-29
    • 1970-01-01
    • 2022-06-17
    • 1970-01-01
    • 2017-12-04
    相关资源
    最近更新 更多