1

ユーザーを認証してFirebaseUserテーブルを更新した後、年齢、性別、住所などの余分なデータを保存する必要があります。ユーザーノードを作成し、 FirebaseUser〜UID。私のやり方は正しい?誰かが私の理解を助けることができれば、感謝しています。ありがとうございました。Firebaseユーザーを拡張する

答えて

3

Firebaseでは一般的には、helper classmodel classPOJO class)ユーザーのために作成することであり、この達成するために、このcorect方法:

public class User implements Serializable { 
    private String name; 
    private int age; 
    private String gender; 
    private String address; 
    private String email; 

    public User() {} 

    public User(String name, int age, String gender, String address, String email) { 
     this.name = name; 
     this.age = age; 
     this.gender = gender; 
     this.address = address; 
     this.email = email; 
    } 

    public String getName() {return name;} 
    public void setName(String name) {this.name = name;} 

    public int getAge() {return age;}  
    public void setAge(int age) {this.age = age;} 

    public String getGender() {return gender;} 
    public void setGender(String gender) {this.gender = gender;} 

    public String getAddress() {return address;} 
    public void setAddress(String address) {this.address = address;} 

    public String getEmail() {return email;} 
    public void setEmail(String email) {this.email = email;} 
} 

ユーザーに固有の識別子が必要なため、uidが最適です。あなたは次のコード行を使用してuidを取得できます。

String uid = FirebaseUser.getInstance().getCurrentUser().getUid(); 

は、あなたのデータベースにデータを挿入するには、Userクラスのオブジェクトを作成する必要があります。あなたは、単にあなたのFirebaseデータベースからのデータを追加/取得するために公共のセッターとゲッターを使用することができます。このでは

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); 
DatabaseReference usersRef = rootRef.child("users"); 
User user = new User("John", 25, "male", "101 Main Street", "[email protected]"); 
usersRef.child(uid).setValue(user); 

:だから、次のコードを使用してください。私は、ユーザー間の識別子として `uid`を使用している

Firebase-root 
    | 
    --- users 
      | 
      --- uid1 
       | 
       --- name: "John" 
       | 
       --- age: 25 
       | 
       --- gender: "male" 
       | 
       --- address: "101 Main Street" 
       | 
       --- email: "[email protected]" 
+0

あなたのデータベースには、次のようなもののようになります。できるだけ 'messagesRef.child(uid).setValue(user);'行で使用されています。あなたがpojoクラスのフィールドとして 'uid'を必要とする場合は、それに応じて追加してください。 –

+0

私の答えより深く進むためのupvoteを持っています! – Grimthorr

+0

ありがとう! @Grimthorr –

2

current user's unique IDあなたが使用することができますを取得するには、正しいです:

FirebaseUser.getInstance().getCurrentUser().getUid(); 

そして、あなたは、その後、キーとしてのようなものというユニークなIDを使用してFirebaseリアルタイムデータベースにユーザーに関する詳細情報を格納することができます

FirebaseUser user = FirebaseUser.getInstance().getCurrentUser(); 
String userId = user.getUid(); 

DatabaseReference usersRef = FirebaseDatabase.getInstance().getReference("users"); 

HashMap<String, Object> userDetails = new HashMap<>(); 
message.put("name", "P. Sherman"); 
message.put("age", 50); 
message.put("gender", "male"); 
message.put("address", "42 Wallaby Way, Sydney"); 
message.put("email", user.getEmail()); 

messagesRef.child(userId).setValue(userDetails); 
関連する問題