自动将自定义模型映射到数据结构
将一些数据设置到数据库并获得由这样的几个节点组成的结构之后;
"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,...