如何知道数据库中是否已存在特定值?

时间:2017-07-27 18:33:10

标签: android firebase firebase-realtime-database firebase-authentication

当用户使用他们的Google帐户登录时,我需要使用他们的电子邮件在我的firebase中创建一个数据库用户,如果用户已经存在同一个电子邮件,我不需要创建另一个。我写了这样的话:

mAuthListener = new FirebaseAuth.AuthStateListener(){
        @Override
        public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {

            if(firebaseAuth.getCurrentUser() != null){
                String userGoogleEmail = firebaseAuth.getCurrentUser().getEmail();
                databaseUser.orderByChild("userEmail").equalTo(userGoogleEmail);
                Toast.makeText(Activity_log_in.this, "already have", Toast.LENGTH_LONG).show();

                startActivity( new Intent(Activity_log_in.this, List.class));
            }
        }
    };

但是我需要在查询之前检查一个条件,而我不知道该怎么做

1 个答案:

答案 0 :(得分:0)

考虑执行以下操作:

databaseUser.orderByChild("userEmail").equalTo(userGoogleEmail).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
    if(dataSnapshot.getChildrenCount() == 0){
        //Can create new user
    }else{
        //User already exists
    }
}

@Override
public void onCancelled(DatabaseError databaseError) {
    // Getting Post failed, log a message
    Log.w(TAG, "loadPost:onCancelled", databaseError.toException());
    // ...
}
}););

希望有效!