自動將自定義模型對映到資料結構
將一些資料設定到資料庫並獲得由這樣的幾個節點組成的結構之後;
"user" : {
"-KdbKcU2ptfYF2xKb5aO" : {
"firstName" : "Arthur",
"lastName" : "Schopenhauer",
"userName" : "AphorismMan",
"phone" : "+9022-02-1778",
"gender": "M",
"age" : 25
},
"-KdbQFjs9BDviuqQVHjY" : {
"firstName" : "Werner",
"lastName" : "Heisenberg",
"userName" : "whereAmI",
"phone" : "+9005-12-1901",
"gender": "M",
"age" : 75
}
}
你可以對資料結構進行分類。
建立類
建立要設定為資料庫的模型類。
@IgnoreExtraProperties
public class User {
public String firstName;
public String lastName;
public String userName;
public String phone;
public String gender;
public int age;
public User() {
}
public User(String firstName, String lastName, String userName, String phone, String gender, int age) {
this.firstName = firstName;
this.lastName = lastName;
this.userName = userName;
this.phone = phone;
this.gender = gender;
this.age = age;
}
}
建立要對映到資料的模型類時要記住的一些事項:
- 你必須有一個空的建構函式
- 變數/欄位的範圍必須是公共的,以便從 firebase 返回的 DataSnapshot 可以訪問這些欄位。如果不這樣做,當你想要獲取資料時,DataSnapshot 無法在回撥中訪問你的模型,這將導致異常。
- 變數/欄位的名稱應與資料結構中的名稱匹配。
傳送到 Firebase
建立使用者物件
User user = new User ( "Arthur","Schopenhauer","AphorismMan","+9022-02-1778","M",25)
和參考
DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference();
現在你可以參考你的資料庫了。使用 databaseReference.child("user")
建立 user
節點。如果你做 .push()
,你的模型將位於隨機建立的獨特 ID 中,如上面的 "-KdbKcU2ptfYF2xKb5aO", "-KdbQFjs9BDviuqQVHjY"
。
databaseReference.child("user").push().setValue(user, new DatabaseReference.CompletionListener() {
@Override
public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) {
Toast.makeText(getActivity(), "User added.", Toast.LENGTH_SHORT).show();
}
});
如果要在特定金鑰下設定資料,請使用 .child("yourSpecificKey")
而不是 .push()
進行設定。
databaseReference.child("user").child("yourSpecificKey").setValue(user,...