2017-09-27 58 views
0

我正在開發一個帶有Firebase的簡單Android應用程序。我想將用戶保存在實時數據庫中,而不使用電子郵件和密碼進行身份驗證。我只是想讓他們的名字和他們的角色(例如老師和學生)用單選按鈕來挑選。後來我想顯示在列表中的所有用戶,但我想知道數據庫應如何設立,如何根據自己的角色,以顯示正確的活動Android - Firebase中的兩種類型的用戶

它應該是:

User 
"something" 
    username: "name" 
    role: "Teacher" 

User 
    "KA2aslkdajsdlsad" 
    username: "name" 
    role: "teacher" 

回答

2

當然你需要使用第二個選項。您需要爲所有這些用戶使用唯一的標識符。爲了實現一個新的獨特密鑰(基於時間),我使用push()方法重新推薦你。它也完全由客戶端生成,無需諮詢服務器。

另一方面,我使用Firebase Anonymous Authentication重溫你。

希望它有幫助。

+0

感謝您的想法。你知道一種根據選擇的角色顯示正確活動的方式嗎? – John

+0

用戶 -kSFUSDSDeevefeve(唯一鍵) UID: 「KA2aslkdajsdlsad」 用戶名: 「名稱」 角色: 「老師」 – akhilesh0707

+0

不客氣約翰!這基本上是另一個問題。爲了遵循這個社區的規則,請張貼另一個新的問題,以便我和其他用戶可以幫助你。 –

2

首先,根據你的用戶信息製作一個POJO java對象。

public class User{ 
     String username; 
     int roleId; // 1 for student, 2 for teacher 
     public User(String username, int roleId){ 
      this.username = username; 
      this.roleId = roleId; 
     } 
    } 

現在存儲用戶的實時數據庫的內部環境:

FirebaseDatabase.getInstance() 
      .getReference() 
      .child("users") 
      .push() 
      .setValue(new User("John", 1)); 

如果你需要將所有的用戶獲取數據,可以這樣做:

final List<User> userList = new ArrayList<>(); 
FirebaseDatabase.getInstance() 
      .getReference() 
      .child("users") 
      .addListenerForSingleValueEvent(new ValueEventListener() { 
       @Override 
       public void onDataChange(DataSnapshot dataSnapshot) { 

        for (DataSnapshot snapshot : dataSnapshot.getChildren()){ 
         User user = snapshot.getValue(User.class); // this is your user 
         userList.add(user); // add to list 
        } 
        // Now may be display all user in listview 
       } 

       @Override 
       public void onCancelled(DatabaseError databaseError) { 

       } 
      });