Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

138
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda