2016-03-31 15 views
1

In meiner App meldet sich ein Benutzer an. Zuerst authentifiziere ich den Benutzer anhand der E-Mail-Adresse.Bewährte Methode zum Speichern eines vorhandenen POJO-Objekts in einer Firebase-Datenbank

protected Boolean doAuthenticateWithEmail(final String mEmail, String mPassword) 

In der Callback-Methode onAuthenticated der Benutzer in der Firebase Datenbank mit der folgenden POJO gespeichert ist:

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; 
}} 
der Code

das Benutzerobjekt unter einem Knoten zu speichern, die die Mail-Adresse darstellt, dieser ist.

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

Meine Frage ist: Was ist die beste Praxis ist, wenn der Benutzer bereits vorhanden ist? Soll ich zuerst prüfen, ob die Daten vorhanden sind oder nur die vorhandenen Daten überschreiben?

Antwort

0

Es stellt sich heraus, dass eine Überprüfung erforderlich ist.

 /** 
    * 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); 
      } 
     } 
Verwandte Themen