Búsqueda de sitios web

typescript - Tipo 'QueryDocumentSnapshot<DocumentData>' no tiene firmas de llamada.ts(2349)


Estoy tratando de crear un formulario para agregar más administradores a mi proyecto.

async addAdmin() {

    const querySnapshot = await getDocs(collection(this.db, "admin-requests"));
    querySnapshot.forEach((doc) => {
      if (doc.data().email === this.addAdminFormGroup.controls.adminEmail.value) {
        setDoc(doc(this.db, "admins", doc.data().uid), {
          name: doc.data().name,
          email: doc.data().email,
          uid: doc.data().uid
        });
      }
    }); 
  }

setDoc(doc(...

la parte del documento me está dando un error que es:

(parámetro) doc: QueryDocumentSnapshot DocumentData

Esta expresión no se puede invocar. El tipo 'QueryDocumentSnapshot DocumentData' no tiene firmas de llamada.ts(2349)

Respuesta #1

El problema era usar el nombre del doc tanto para cada documento en forEach como para la función.

Se cambió el nombre del documento forEach para solucionar el problema y el nombre del snapshot para una mayor legibilidad.

Forma correcta:

async addAdmin() {

    const adminRequestsSnapshot = await getDocs(collection(this.db, "admin-requests"));
    adminRequestsSnapshot.forEach((adminRequestDoc) => {
      if (adminRequestDoc.data().email === this.addAdminFormGroup.controls.adminEmail.value) {
        setDoc(doc(this.db, "admins", adminRequestDoc.data().uid), {
          name: adminRequestDoc.data().name,
          email: adminRequestDoc.data().email,
          uid: adminRequestDoc.data().uid
        });
      }
    }); 
  }