有没有办法在我从Firebase对象转换的类中存储Key?
这是我的数据库:
[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数据库上获取另一个字段。
谢谢你们。
我更喜欢将键和值分开,或以其他方式传递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();
有关:
- 如何管理firebase数据库密钥?
- 在Custom Object Firebase Android中获取参考和密钥
不,那里没有。 这是通过将pushKey存储在字符串中来实现此目的的唯一方法。 getKey()
方法的返回类型是String。
String pusedhKey = yorRef.getKey();
使用firebase时,我更喜欢将我的数据存储在一个hashmap中,这样我就可以保持我的模型类干净,同时还能保留密钥。
例如,在onDataChanged(snap:DataSnapshot)
MyModel m = snap.getValue(MyModel.class); myHashMap.put(snap.key, m)
顺便说一句, HashMap
(请原谅古怪的格式,我正在用手机打字)