Firebase Realtime Database: Comment obtenir la clé unique après push (). Set ()?

Nov 17 2020

Dans mon code flottant, voici ce que je fais pour enregistrer des données dans Firebase Real-TIME Database

final DatabaseReference reference = FirebaseDatabase.instance.reference().child('chat_room');

void _sendMessage({String messageText, String imageUrl}) async{
    await reference.push().set({
      'text': messageText,
      'imageUrl': imageUrl,
    });

  }

Cela génère le résultat suivant dans la base de données

J'ai besoin de récupérer la clé unique générée dès que j'ai soumis les données, mais comment puis-je faire cela?

Réponses

2 RenaudTarnec Nov 17 2020 at 15:21

La push()méthode renvoie a DatabaseReference, vous pouvez donc procéder comme suit:

final DatabaseReference reference = FirebaseDatabase.instance.reference().child('chat_room');

void _sendMessage({String messageText, String imageUrl}) async {
    DatabaseReference newRef = reference.push();
    String newKey = newRef.key;
    await newRef.set({
      'text': messageText,
      'imageUrl': imageUrl,
    });

  }

Notez que vous obtenez immédiatement le nouveau DatabaseReferencelors de l'appel de la push()méthode: pas besoin d'attendre la fin de l'appel à la set()méthode asynchrone .

1 Akif Nov 17 2020 at 15:23

Vous pouvez obtenir cet identifiant avec une approche différente. Tout d'abord, vous pouvez obtenir l'identifiant suivant et y insérer l'élément. Il ressemblera à ceci:


final DatabaseReference reference = FirebaseDatabase.instance.reference().child('chat_room');

void _sendMessage({String messageText, String imageUrl}) async{

    String newkey = reference.push().key; // That is your unique key!

   await reference.child(newkey).set({
      'text': messageText,
      'imageUrl': imageUrl,
    });
  }