Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

144
Vistas
¿Eliminar un lote de documentos usando el SDK de administrador y la función de nube invocable de la manera más similar al SDK del cliente?

Tengo una serie de ID de documentos que quiero eliminar al usar una función en la nube, mi código se parece a lo siguiente:

 //If the user decieds on deleting his account forever we need to make sure we wont have any thing left inside of db after this !! // incoming payload array of 3 docs data = {array : ['a302-5e9c8ae97b3b','92c8d309-090d','a302-5e932c8ae97b3b']} export const deleteClients = functions.https.onCall(async (data, context) => { try { // declare batch const batch = db.batch(); // set data.arr.forEach((doc: string) => { batch.delete(db.collection('Data'), doc); }); // commit await batch.commit(); } catch (e) { console.log(e); } return null; });
Recibo un error de sintaxis en batch.delete ¿cómo pasar los argumentos correctos a la eliminación por lotes para hacer referencia a ese documento que quiero enviar para su eliminación antes de confirmar?

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Eliminar toma un único parámetro, la referencia del documento que se va a eliminar.

 data.arr.forEach((docId: string) => { batch.delete(doc(db, "Data", docId)); });
about 4 years ago · Juan Pablo Isaza Denunciar

0

Hay varios errores en tu código:

  • data.arr.forEach() no puede funcionar porque su objeto de datos contiene un elemento con la array de claves y no la clave arr .
  • Está mezclando la sintaxis de JS SDK v9 y Admin SDK . Consulte la sintaxis del SDK de administrador de escritura por lotes aquí .
  • Debe enviar algunos datos al cliente cuando se complete todo el trabajo asíncrono, para finalizar correctamente su CF.
  • return null; DESPUÉS del bloque try/catch: esto significa que, en la mayoría de los casos, su función en la nube finalizará antes de que se complete el trabajo asíncrono (vea el enlace anterior)

Entonces, lo siguiente debería funcionar (no probado):

 const db = admin.firestore(); const data = {array : ['a302-5e9c8ae97b3b','92c8d309-090d','a302-5e932c8ae97b3b']}; export const deleteClients = functions.https.onCall(async (data, context) => { try { const batch = db.batch(); const parentCollection = db.collection('Data') data.array.forEach((docId) => { batch.delete(parentCollection.doc(docId)); }); // commit await batch.commit(); return {result: 'success'} // IMPORTANT, see explanations above } catch (e) { console.log(e); // IMPORTANT See https://firebase.google.com/docs/functions/callable#handle_errors } });
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda