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

208
Vistas
¿Cómo actualizar una matriz dentro de una matriz en Google Cloud Firestore?

La matriz principal se elimina al actualizar la matriz dentro de una matriz. Solo quiero que se actualice la matriz anidada. ¿Cómo resolverlo? a continuación está mi código:

 const handleSubmit = async (e) => { e.preventDefault(); const commentToAdd = { displayName: user.displayName, photoURL: user.photoURL, content: newComment, createdAt: timestamp.fromDate(new Date()), id: Math.random() } await updateDocument(project.id, { tasks: [ { comments: [{...project.tasks.comments, commentToAdd}], } ] })
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Firestore no admite la actualización de elementos de matriz en un índice dado. Primero debe buscar el documento, actualizar el campo de matriz con datos relevantes y actualizar toda la matriz nuevamente. Las matrices anidadas harán que sea aún más complejo actualizar un elemento anidado.

Simplemente puede hacer esto un poco creando una subcolección para tareas como se muestra a continuación:

 projects -> { projectId } -> tasks -> { taskId }

De esta forma, cada documento de tarea tendrá una matriz de comentarios. Sin embargo, aún tendrá que leer los comentarios y luego volver a escribir la matriz actualizada.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Como dijo @Dharmaraj, Firestore no admite la actualización de elementos de matriz en un índice dado.

Hasta donde entiendo tu pregunta. Si desea que no se elimine esa matriz principal, y simplemente actualice/agregue commentsToAdd en la matriz de comments . También puede usar setDoc en lugar de updateDoc . Vea el código a continuación, por ejemplo.

 for (let step = 0; step < 5; step++) { const commentToAdd = { displayName: `someName-${step}`, photoURL: `someURL-${step}`, content: `someContent-${step}`, createdAt: new Date(), id: Math.random() }; await setDoc({someRef}, { tasks: { comments: arrayUnion(commentToAdd) } }, {merge: true}) }

El código anterior daría como resultado: ingrese la descripción de la imagen aquí

Recorrí el código para enviar múltiples comentarios en el campo. Solo una nota, al hacer esto, sus tipos de campo se actualizarán en consecuencia:

 - tasks: `map` - comments: `array` - commentFields: `map`

También puede consultar esta documentación para obtener más información.

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