向实时数据库添加新数据是否有任何错误?
Is there any error for adding a new data to realtime database?
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的Realtime Database也没有添加任何数据。我还添加了 OnFailureListener 和 OnCanceledListener,但两者都没有检测到错误。
虽然没有报错,但是数据库并没有新增任何数据
将数据写入实时数据库时无需使用 try-catch。 DatabaseReference#setValue(Object value) returns an object of type Task. That being said, you can use 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)
}
}
}
问题是实时数据库的URL不包含在jason文件中,这可能是因为我在创建实时数据库之前包含了jason文件。解决方法如下
cDatabaseRef = FirebaseDatabase.getInstance("AddingURL from firebase realtime database").getReference()
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的Realtime Database也没有添加任何数据。我还添加了 OnFailureListener 和 OnCanceledListener,但两者都没有检测到错误。 虽然没有报错,但是数据库并没有新增任何数据
将数据写入实时数据库时无需使用 try-catch。 DatabaseReference#setValue(Object value) returns an object of type Task. That being said, you can use 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)
}
}
}
问题是实时数据库的URL不包含在jason文件中,这可能是因为我在创建实时数据库之前包含了jason文件。解决方法如下
cDatabaseRef = FirebaseDatabase.getInstance("AddingURL from firebase realtime database").getReference()