Aggiorna il documento Firestore dove user_id è uguale a currentUser uid
Ho la funzione che sto utilizzando per creare o aggiornare il cliente.
Sono in grado di scrivere con successo su db. Ho creato un campo chiamato user_id in cui salvo il currentUser uid in modo da poter leggere solo i documenti degli utenti registrati.
Tuttavia, non sono in grado di aggiornare i documenti perché so che probabilmente non sto facendo riferimento al documento nel modo giusto.
Ottengo il seguente errore:
flutter: Errore: PlatformException (Errore 5, FIRFirestoreErrorDomain, Nessun documento da aggiornare:
Che cosa sto facendo di sbagliato?
Ecco la mia funzione di seguito:
Future createOrUpdateCustomer(Customer customer, bool isUpdating) async {
FirebaseUser user = await FirebaseAuth.instance.currentUser();
String userId = user.uid;
print('Current logged in user uid is: $userId'); CollectionReference customerRef = await Firestore.instance.collection('customers'); if (isUpdating) { customer.updatedAt = Timestamp.now(); customer.userId = userId; await customerRef.document().updateData(customer.toMap()); print('updated customer with id: ${customer.id}');
print('updated customer with logged in uid: ${customer.userId}'); } else { customer.createdAt = Timestamp.now(); DocumentReference documentReference = customerRef.document(); customer.id = documentReference.documentID; customer.userId = userId; print('created customer successfully with id: ${customer.id}');
await documentReference.setData(customer.toMap(), merge: true);
addCustomer(customer);
}
notifyListeners();
}
Risposte
Stai tentando di aggiornare un documento inesistente. In questa linea,
await customerRef.document().updateData(customer.toMap())
Stai creando un riferimento al documento con un ID generato in modo casuale. Dovresti impostare esplicitamente la iddel documento che stai aggiornando.
Penso che tu possa aggiornare il documento con le condizioni ma il riferimento deve essere l' ID del documento, che vedi nella seconda sezione dell'interfaccia di Firestore.