1. ホーム
  2. android

[解決済み] Firebase Databaseにキーが存在するかどうかを確認する方法は?重複

2022-02-15 06:52:32

質問

質問を投稿する前に、私の問題についての多くの回答を見ましたが、私はその回答を理解することができませんでした。 だから、私はどのように認証からのユーザーIDがデータベースのキーであるかどうかをチェックすることができるかを知りたいのですか?

CODE

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    user = FirebaseAuth.getInstance().getCurrentUser();
    db = FirebaseDatabase.getInstance().getReference().child("UserInfo");
    Thread mythread = new Thread() {
        public void run() {
            try {
                while (splashActive && ms < splashTime) {
                    if (!paused)
                        ms = ms + 100;
                    sleep(100);
                }
            } catch (Exception e) {
            } finally {
                if (user != null) {
                    if (user.getUid().toString().equals(/* How to check if key exists or not*/)) {
                        Intent intent = new Intent(MainActivity.this, Chat.class);
                        startActivity(intent);
                    } else {
                        Intent intent = new Intent(MainActivity.this, UploadUserInfo.class);
                        startActivity(intent);
                    }
                } else {
                    Intent intent = new Intent(MainActivity.this, RegisterUser.class);
                    startActivity(intent);

                }
            }
        }
    };
    mythread.start();
}

}

画像にあるように、User UIDがFirebaseデータベースのキーであるかどうかをチェックしたいのです。

どのように解決するのですか?

このように確認することができます。

db.child(user.getUid()).addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            if(dataSnapshot.exists()){
                // user exists in the database
                String userName = dataSnapshot.child("userName").getValue(String.class);
                Intent intent = new Intent(MainActivity.this, Chat.class);
                startActivity(intent);
            }else{
                // user does not exist in the database
                Intent intent = new Intent(MainActivity.this, UploadUserInfo.class);
                startActivity(intent);
            }
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });

存在する スナップショットに非NULL値が含まれている場合、trueを返します。