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

130
Visualizações
Copia del documento de Cloud Functions

Funciones en la nube

  1. Quiero leer el documento y editar algunos campos para agregarlo como un nuevo documento. ¿Cómo puedo hacer eso?

const nuevosdatos = valor.datos(); //<<< modificación de campo

  1. ¿Y puedo usar copyWith?

Código:

 exports.productCopy = functions.https.onCall( async (data, context)=>{ const uid = context.auth.uid; data.selectedProductId.forEach((docId){ const productRef = admin.firestore() .collection('products') .doc(docId); const newProductRef = admin.firestore() .collection('products') .doc(); const product = await productRef.get().then((value)=>{ const newData = value.data(); newProductRef.add(value.data()) }); }); return {status:'success', isError: false}; });
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Primero, es bueno saber que cada documento es inmutable, después de obtener un documento en una variable, puede modificar esa variable y luego deberá colocar/actualizar/parchar el nuevo documento.

Quise decir que necesita hacer 2 llamadas a la API para guardar correctamente el documento en su base de datos.

about 4 years ago · Juan Pablo Isaza Relatório

0

Realmente no puedes usar await en el bloque forEach . Si desea esperar varias acciones, use Promise.all() .

Debería ser algo como esto:

 exports.productCopy = functions.https.onCall((data, context) => { const uid = context.auth.uid; const promises = data.selectedProductId.map((docId) => { return admin.firestore() // 👈 Return promise, which bubbles up .collection('products') .doc() // 👈 You need to specify a document ID here, uid maybe? .get() .then((doc) => { const newData = doc.data(); return admin.firestore() // 👈 Return promise, which bubbles up .collection('products') .doc(docId) .add(value.data()); }); }); return Promise.all(promises).then((results) => { // 👈 Wait for all promises to resolve return { status:'success', isError: false }; }) });

En general, es mejor no mezclar async / await con then() , ya que es fácil meterse en situaciones como las que tenía. Aquí, solo usando promesas, mantenga el código lo más simple posible

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