update transaction runtransaction firestore coleccion batch java android firebase firebase-database

java - transaction - ¿Hay alguna manera de almacenar Key en la clase que lanzo desde el objeto de Firebase?



java firestore (3)

Esta es mi base de datos:

[x] database -- > [+] students -----> [+] -KuGacomJymBwkcc7zlU (pushKey) -----------> Name - Jon -----------> Age - 21

Tengo Student.class:

String name; String age; public Student(String Name, String Age) { this.name=Name; this.age=Age; }

Leí la información de firebase datasnapshot así:

Student newStudent = DataSnapshot.getValue(Student.class);

Cuando hago esto, obtengo el nombre y la edad, pero mi pregunta es si hay una manera de almacenar el ID (pushKey) en la clase de Estudiante sin agregar una Cadena que lo mantenga y tomar otro campo en la base de datos de firebase.

Gracias a todos.


Cuando trabajo con firebase, prefiero almacenar mis datos en un hashmap, así puedo mantener mi clase de modelo limpia y, a la vez, mantener la clave.

Entonces, por ejemplo, en onDataChanged(snap:DataSnapshot)

MyModel m = snap.getValue(MyModel.class); myHashMap.put(snap.key, m)

Por cierto, HashMap<String, MyModel> myHashMap;

(Disculpe el formato peculiar, estoy escribiendo desde mi teléfono)


No no hay. Esta es la única forma en que puede lograr esto, almacenando esa llave push en una cadena. El tipo de getKey() método getKey() es String.

String pusedhKey = yorRef.getKey();


Prefiero mantener separadas las claves y los valores, o pasar las DataSnapshot alrededor. Pero si lo desea, también puede extraer la clave ( DataSnapshot.getKey() ) y configurarla en una propiedad de su clase Java que usted @Exclude :

public class Student { @Exclude public String key; public String name; public String age; }

Y entonces:

Student newStudent = snapshot.getValue(Student.class); newStudent.key = snapshot.getKey();

Relacionado: