有没有办法在我从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 myHashMap;

(请原谅古怪的格式,我正在用手机打字)