提问者:小点点

来自Android setValue的Firebase实时数据库不起作用


我是第一次尝试使用实时数据库。设置值函数对我不起作用。

我已经通过以下方式更新了写作规则:

{
  "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。

谢谢你的帮助。


共3个答案

匿名用户

发现问题了。该数据库位于欧洲。显然,我没有在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!")

匿名用户

  1. Ensure your sha1 is added to firebase
  2. Enable signIn method in Firebase
  3. Enable Android Device Verification in Google Cloud
  4. Ensure internet permission in AndroidManifest.xml
  5. Provide db url in getInstance(). How to find Database URL
    DatabaseReference ref = FirebaseDatabase.getInstance("<<Insert Databse URL here>>").getReference();