Aggiorna il documento Firestore dove user_id è uguale a currentUser uid

Oct 06 2020

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

2 Riwen Oct 06 2020 at 09:30

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.

1 AtiqUrRehman Oct 06 2020 at 09:29

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.