Firebase Realtime Database: como obter a chave exclusiva após push (). Set ()?
Nov 17 2020
No meu código flutuante, abaixo está o que estou fazendo para salvar dados no 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,
});
}
Isso gera o seguinte resultado no banco de dados
Preciso recuperar a chave exclusiva gerada assim que enviar os dados, mas como posso fazer isso?
Respostas
2 RenaudTarnec Nov 17 2020 at 15:21
O push()método retorna um DatabaseReference, então você pode fazer o seguinte:
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,
});
}
Observe que você obtém o novo imediatamente DatabaseReferenceao chamar o push()método: não há necessidade de esperar set()a conclusão da chamada para o método assíncrono .
1 Akif Nov 17 2020 at 15:23
Você pode obter esse id com uma abordagem diferente. Primeiro, você pode obter o próximo id e inserir o item nele. Isso parecerá assim:
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,
});
}
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?