这是我的数据库:
[x] database
-- > [+] students
-----> [+] -KuGacomJymBwkcc7zlU (pushKey)
-----------> Name - Jon
-----------> Age - 21
我有Student.class:
String name;
String age;
public Student(String Name, String Age) {
this.name=Name;
this.age=Age;
}
我从firebase datasnapshot中读取了这样的信息:
Student newStudent = DataSnapshot.getValue(Student.class);
当我这样做时,我得到了名称和年龄,但我的问题是,是否有办法在Student类上存储ID(pushKey)而不添加将保存它的String并在firebase数据库上取另一个字段
谢谢大家。
答案 0 :(得分:5)
我更喜欢将键和值分开,或以其他方式传递DataSnapshot
。但是如果需要,您还可以提取密钥(DataSnapshot.getKey()
)并将其设置在Java类中@Exclude
的属性上:
public class Student {
@Exclude
public String key;
public String name;
public String age;
}
然后:
Student newStudent = snapshot.getValue(Student.class);
newStudent.key = snapshot.getKey();
相关:
答案 1 :(得分:0)
不,没有。这是通过将pushKey存储在字符串中来实现此目的的唯一方法。 getKey()
方法的返回类型是String。
String pusedhKey = yorRef.getKey();
答案 2 :(得分:0)
使用firebase时,我更喜欢将我的数据存储在一个hashmap中,这样我就可以保持我的模型类干净,同时还能保留密钥。
例如,在Dealer
onDataChanged(snap:DataSnapshot)
顺便说一下,MyModel m = snap.getValue(MyModel.class);
myHashMap.put(snap.key, m)
(请原谅古怪的格式,我在手机上打字)