Firebase Realtime Database: Comment obtenir la clé unique après push (). Set ()?
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
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 .
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,
});
}