0

當用戶與他們的谷歌帳戶登錄,我需要建立在我火力的數據庫用戶與他們的電子郵件,如果用戶設置了相同的電子郵件存在,我不需要再創建一個。我寫的是這樣的:如何知道特定值在數據庫中已存在?

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)); 
      } 
     } 
    }; 

但我需要檢查的條件,查詢之前,我不知道該怎麼做

回答

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()); 
    // ... 
} 
});); 

希望的作品!

+0

你好的人,先謝謝大家對我的幫助,但我不明白的情況,你used.And給我一些錯誤,比如'錯誤:(66,56)錯誤:無法比擬的類型:可迭代和INT ' 和 '錯誤:(63,79)誤差:無法找到符號方法addValueEventListener(<匿名ValueEventListener>)' 我想你的這個代碼後:) 'mAuthListener =新FirebaseAuth.AuthStateListener({ @覆蓋 公共void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth){ String userGoogleEmail = firebaseAuth.getCurrentUser()。getEmail();'@ ziya-erkoc –

+0

它應該是getChildrenCoun T()抱歉:) –

+0

考慮具有'dataSnapshot.exists()''替換dataSnapshot.getChildrenCount()'。 –

相關問題