我是第一次尝试使用实时数据库。设置值函数对我不起作用。
我已经通过以下方式更新了写作规则:
{
"rules": {
".read": true,
".write": true
}
}
我的代码如下所示:
Integer Age = 24;
FirebaseDatabase mDatabase = FirebaseDatabase.getInstance();
DatabaseReference sReference = mDatabase.getReference();
sReference.child("Users").child("George").child("Age").setValue(Age)
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Toast.makeText(Dashboard.this, "Data stored", Toast.LENGTH_LONG).show();
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(Dashboard.this, "Error", Toast.LENGTH_LONG).show();
}
});
当我打印出参考时,它是正确的。但是,不会触发OnSucces或OnFailure。
谢谢你的帮助。
发现问题了。该数据库位于欧洲。显然,我没有在getInstance()方法中指定URL,这在本例中似乎是必需的。
这可能是Firebase实时数据库错误。当您选择欧洲服务器(测试版)而不是美国时,就会发生这种情况。并且没有任何类型的错误或警告。
如上所述进行修复。在数据库实例中使用firebase控制台的直接链接(用firebase控制台实时数据库部分的项目数据更改xxx):
// Write a message to the database
val database = Firebase.database("https://xxxxxxxx-xxxxxxx-default-rtdb.europe-west1.firebasedatabase.app/")
val myRef = database.getReference("message")
myRef.setValue("Hello, World!")
DatabaseReference ref = FirebaseDatabase.getInstance("<<Insert Databse URL here>>").getReference();