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
});
}
});
}
