有没有办法在我从Firebase对象投射的类中存储Key?

时间:2017-09-18 15:12:28

标签: java android firebase firebase-realtime-database

这是我的数据库:

[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数据库上取另一个字段

谢谢大家。

3 个答案:

答案 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)

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