自動將自定義模型對映到資料結構

將一些資料設定到資料庫並獲得由這樣的幾個節點組成的結構之後;

"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;
    }
}

建立要對映到資料的模型類時要記住的一些事項:

  1. 你必須有一個空的建構函式
  2. 變數/欄位的範圍必須是公共的,以便從 firebase 返回的 DataSnapshot 可以訪問這些欄位。如果不這樣做,當你想要獲取資料時,DataSnapshot 無法在回撥中訪問你的模型,這將導致異常。
  3. 變數/欄位的名稱應與資料結構中的名稱匹配。

傳送到 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,...