2016-03-31 13 views
1

私のアプリでは、ユーザーがログインします。まず、メールアドレスでユーザーを認証します。コールバックメソッドで既存のPOJOオブジェクトをFirebaseデータベースに保存するベストプラクティス

protected Boolean doAuthenticateWithEmail(final String mEmail, String mPassword) 

ユーザは、以下のPOJOとFirebaseデータベースに格納されonAuthenticated:

public class User { 

private String emailAddress; 
private String profitNumber; 
private String userName; 

public User() { 
    //Default constructor used by Firebase 
} 

public User(String emailAddress, String profitNumber, String userName) { 
    this.emailAddress = emailAddress; 
    this.profitNumber = profitNumber; 
    this.userName = userName; 
} 

public String getEmailAddress() { 
    return emailAddress; 
} 

public String getProfitNumber() { 
    return profitNumber; 
} 

public String getUserName() { 
    return userName; 
}} 

これは、メールアドレスを表すノードの下にユーザーオブジェクトを格納するためのコードです。

Firebase userRef = new Firebase(Constants.FIREBASE_URL_USERS); 
userRef.setValue(user.getEmailAddress().replace(".",",")); 
Firebase mailRef = userRef.child(user.getEmailAddress().replace(".",",")); 
mailRef.setValue(user); 

私の質問は: このユーザーがすでに存在する場合のベストプラクティスは何ですか?最初にデータが存在するかどうかを確認するか、既存のデータを上書きするだけですか?

答えて

0

チェックが必要であることが判明しました。

 /** 
    * Encode user email replacing "." with "," to be able to use it 
    * as a Firebase db key 
    */ 
    String mEncodedEmail = mEmail.replace(".", ","); 

    /* If the user doesn't exists, make a user */ 
    final Firebase userLocation = new Firebase(Constants.FIREBASE_URL_USERS).child(mEncodedEmail); 
    userLocation.addListenerForSingleValueEvent(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
       /* If nothing is there ...*/ 
      if (dataSnapshot.getValue() == null) { 

       userLocation.setValue(user); 
      } 
     } 
関連する問題