2017-02-01 4 views
0

Ich verwende eine SortedList, um meine Artikel im RecyclerView zu sortieren. Also muss ich sie durch eine eindeutige ID vergleichen, und Firebase bietet genial generierte Schlüssel dafür.Voreingestellte Objekt-ID beim Drücken auf Firebase

Um neuen Wert auf eine Datenbank schiebt ich laufen müssen:

public void addAdvert(Advert advert, String userId) { 
     String id = reference.child(NODE_USERS) 
     .child(userId) 
     .child(NODE_ITEMS) 
     .push() 
     .getKey() //execute this to just get the id 

     advert.setId(id); 
     getCurrentItemNode().child(advert.getId()).setValue(advert); 

} 

jetzt in der Datenbank meine Anzeige Artikel ist voll ausgestattet mit Id und Knotenschlüssel ausgestattet.

Aber ich neugierig, kann ich schreiben gerade so etwas wie

reference.child(NODE_USERS) 
      .child(userId) 
      .child(NODE_ITEMS).push().setValue(advert); 

Und das gleiche Ergebnis erzielen: beide Schlüssel und ID werden in der Datenbank festgelegt.

Antwort

1

Wenn Sie den Schlüssel in dem Element speichern möchten, müssen Sie entweder zwei Schreibvorgänge ausführen oder zuerst generieren Sie den Schlüssel und dann schreiben Sie es.

Aber warum möchten Sie den Schlüssel in den Artikel zu speichern, um damit zu beginnen?

Als Randbemerkung, dieser Code:

String id = reference.child(NODE_USERS) 
    .child(userId) 
    .child(NODE_ITEMS) 
    .push() 
    .getKey() 

ist genau das gleiche wie folgt aus:

String id = reference.push().getKey() 

Firebase Push-IDs sind clientseitige erzeugt, statistisch eindeutige Werte sein, garantiert. Sie sind nicht abhängig vom Pfad und es gibt keinen Hin- und Rückweg zur Datenbank, um diese Werte zu ermitteln.

Weitere Informationen finden Sie in diesem Blogpost: The 2^120 Ways to Ensure Unique Identifiers.

+0

Ist das ein Fehler @puf? Scheint, dass 'String id = reference.child (NODE_USERS) .getKey()' würde zurückgeben, was 'NODE_USERS' ist; vielleicht meintest du 'reference.push(). getKey()'? Oder vielleicht bin ich verwirrt. –

+1

Yup, das war in der Tat ein Copy/Paste/Modified-the-wrong-Teil. Danke für den Fang! –

+0

Vielen Dank für Ihre Antwort. Ich möchte den Schlüssel im Element speichern, um das Element eindeutig zu machen, wenn ich es das nächste Mal aus der Datenbank holen werde. –

Verwandte Themen