繁体   English   中英

我在 Firebase 控制台的实时数据库中看不到任何数据

[英]I don't see any data in my Realtime Database in Firebase's console

我想弄清楚如何正确使用 Firebase,所以我编写了这个简单的代码,用代码和密码保存了一个“游戏”object。 我还让它在屏幕上显示游戏键。 运行代码,它可以工作并在屏幕上显示一个看起来像键的东西,但我无法在我的 Firebase 控制台上的任何地方找到任何数据。 这是代码:

public class testthing extends AppCompatActivity implements View.OnClickListener {
    EditText pass;
    TextView showkey;
    EditText code;
    Button create;
    String codestr;
    String passstr;
    FirebaseDatabase firebaseDatabase;
    DatabaseReference gameRef;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_testthing);
        pass = findViewById(R.id.pass);
        code = findViewById(R.id.code);
        create = findViewById(R.id.create);
        showkey = findViewById(R.id.showthingy);
        firebaseDatabase = FirebaseDatabase.getInstance();
        create.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        if(view==create){
            codestr=code.getText().toString();
            passstr=pass.getText().toString();

            Game g = new Game(codestr,passstr,"");
            gameRef = firebaseDatabase.getReference("gameRooms").push();
            g.key = gameRef.getKey();
            gameRef.setValue(g);
            showkey.setText(g.key);

        }
    }
}

“游戏”class 是:

@IgnoreExtraProperties
public class Game {
    public String key;
    public String code;
    public String password;
    public Game(){
    }
    public Game(String code, String password,String key){

        this.code = code;
        this.password = password;
        this.key = key;
    }

}

当您使用以下代码行时:

gameRef.setValue(g);

您尝试写入数据库的数据可能成功或失败,但您永远不会知道这一点,因为您没有附加侦听器来检查它。 所以解决这个问题,你必须像下面的代码行一样附加一个监听器:

gameRef.setValue(g).addOnCompleteListener(new OnCompleteListener<Void>() {
    @Override
    public void onComplete(@NonNull Task<Void> task) {
        if (task.isSuccessful()) {
            Log.d("TAG", "The operation is complete.");
            showkey.setText(g.key);
        } else {
            Log.d("TAG", task.getException().getMessage());
        }
    }
});

如果操作失败,很可能是 Firebase 服务器拒绝了您的操作。 因此,请确保您有适当的规则。 否则,将密钥设置为 TextView。请记住,所有 Firebase API 都是异步的。 这包括写入和读取操作。 如果后面需要看资料,推荐看下面这篇文章:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM