• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

91
Views
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}; });
almost 3 years ago · Juan Pablo Isaza
2 answers
Answer question

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.

almost 3 years ago · Juan Pablo Isaza Report

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

almost 3 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error