FLATTERN | Wie das hinzufügen von Daten zu einem vorhandenen Dokument in firestore
Ich bin mit firestore zum speichern der Daten der meine flattern Anwendung, und ich habe eine Funktion, die ein Dokument erstellt, in firestore automatisch nach der Anmeldung eines Benutzers
Meine Firestore-Datenbank
Nun möchte ich den Benutzer, wenn er sich füllt dieses Formular aus , die Daten werden Hinzugefügt, im gleichen Dokument, in dem der Benutzer die E-Mail existiert.
[ RaisedButton(
child: Text("Submit"),
onPressed: () {
final CollectionReference users = Firestore.instance.collection('users');
Firestore.instance
.runTransaction((Transaction transaction) async {
CollectionReference reference =
Firestore.instance.collection('users');
await reference
.add({"fullname": nameController.text, "PhoneNumber": phoneController.text, "adresse": adressController.text});
nameController.clear();
phoneController.clear();
adressController.clear();
});},][2]
Ich versuchte diesen code, aber es fügt neue Dokument.
- dein problem ist mit dem, was Datei, die Sie versuchen, zu aktualisieren. Sie brauchen, um die richtige Referenz zu der Datei. Wissen Sie, welche Datei Sie möchten, zu aktualisieren?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Spefizieren Sie den Dokument name, bevor die Aktualisierung der Datenbank.
Hier mein Preis und Menge die Daten sind zahlen. Wenn dir Saiten legen Sie String-Werte.
instance.collection('users').document('${user.id}').setData({"fullname": nameController.text, "PhoneNumber": phoneController.text, "adresse": adressController.text});
Best practice ist die Verwendung der Transaktion.
Stellen Sie sicher, dass die Referenz ist ein Verweis auf eine Datei, die Sie aktualisieren möchten.
Wird es sicherstellen, dass die Aktualisierung erfolgt, um im Falle es gibt viele Kunden, es zu tun.
Im Falle einer gleichzeitigen Bearbeiten, Cloud-Firestore läuft die gesamte Transaktion erneut. Zum Beispiel, wenn eine Transaktion liest Dokumente und einem anderen client geändert von Dokumenten, Cloud-Firestore wiederholt die Transaktion. Diese Funktion sorgt dafür, dass die Transaktion läuft auf aktuelle und konsistente Daten.
Mehr info hier
Versuchen
.setData({"fullname": nameController.text, "PhoneNumber": phoneController.text, "adresse": adressController.text}, merge: true)
.