将新数据添加到实时数据库是不是有任何错误?

Posted

技术标签:

【中文标题】将新数据添加到实时数据库是不是有任何错误?【英文标题】:Is there any error for adding a new data to realtime database?将新数据添加到实时数据库是否有任何错误? 【发布时间】:2021-12-25 19:52:48 【问题描述】:
private lateinit var cDatabaseRef: DatabaseReference

private fun addUserToDatabase (uid:String,custID:String,custName:String,custPostAddress:String,custPhoneNumber:String,email:String)
       try
            cDatabaseRef = FirebaseDatabase.getInstance().getReference()
            val newCustomer = Customer(custName,email,custID,custPostAddress,custPhoneNumber,uid)
            cDatabaseRef.child("Customers").child(uid).setValue(newCustomer).addOnSuccessListener  Toast.makeText(this, "Success added", Toast.LENGTH_SHORT).show()
                val intent = Intent(this, CustLoginActivity::class.java)
                finish()
                startActivity(intent)
            

         catch(e : Exception)
            Toast.makeText(this, "Some error occurred", Toast.LENGTH_SHORT).show()
        

    

问题是,添加的成功没有出现,firebase的实时数据库没有添加任何数据。我也加了OnFailureListener和OnCanceledListener,但是都没有检测到错误。 虽然没有报错,但是数据库并没有添加任何新数据

【问题讨论】:

也添加一个OnFailureListener 并检查你遇到了什么错误 是的,它不会抛出失败,因为它是一个异步函数。 【参考方案1】:

将数据写入实时数据库时无需使用 try-catch。 DatabaseReference#setValue(Object value) 返回一个 Task 类型的对象。话虽如此,您可以使用addOnCompleteListener() 检查任务是否成功或是否因异常而失败。在代码中,应该是这样的:

cDatabaseRef.child("Customers").child(uid).setValue(newCustomer).addOnCompleteListener  task ->
    if (task.isSuccessful) 
        Log.d(TAG, "Data written successfully.")
     else 
        task.exception?.message?.let 
            Log.d(TAG, it)   
        
    

【讨论】:

其实问题是实时数据库没有添加任何东西 您是否尝试过上述解决方案? else部分被触发了吗? 不适合它。邮箱和密码成功加入认证,但实时数据库没有得到任何数据 好的,但是我已经问过您是否尝试过我的回答中的解决方案。 else部分被触发了吗? 两者都不触发【参考方案2】:

问题是实时数据库的 URL 不包含在 jason 文件中,这可能是因为我在创建实时数据库之前包含了 jason 文件。解决方法如下

 cDatabaseRef = FirebaseDatabase.getInstance("AddingURL from firebase realtime database").getReference()

【讨论】:

以上是关于将新数据添加到实时数据库是不是有任何错误?的主要内容,如果未能解决你的问题,请参考以下文章

带有 Flutter 的实时数据库覆盖数据而不是将其添加到现有节点

为啥在使用 kotlin 将数据添加到 firebase 实时数据库时会得到重复值?

如何将新数据从实时数据库推送到 Cloud Firestore?

对于实时数据,Tkinter matplotlib 画布更新太慢

如何将数据添加到实时数据库?

D3.JS 具有实时数据、平移和缩放的时间序列折线图