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

153
Vistas
¿Cómo actualizo parcialmente un esquema anidado en mongoose?

EDITAR: después de probar muchos enfoques diferentes, encontré una solución funcional que asigna cualquier objeto a un formato que la mangosta entiende. Vea la solución aquí: https://stackoverflow.com/a/69547021/17426304

 const updateNestedObjectParser = (nestedUpdateObject) => { const final = { } Object.keys(nestedUpdateObject).forEach(k => { if (typeof nestedUpdateObject[k] === 'object' && !Array.isArray(nestedUpdateObject[k])) { const res = updateNestedObjectParser(nestedUpdateObject[k]) Object.keys(res).forEach(a => { final[`${k}.${a}`] = res[a] }) } else final[k] = nestedUpdateObject[k] }) return final }

PREGUNTA ORIGINAL:

Tengo una estructura de mangosta de

 ChildSchema = { childProperty: String, childProperty2: String } MainSchema = { mainProperty: String, mainProperty2: String, child: childSchema }

En mi función de actualización, quiero pasar un objeto parcial de mainSchema y solo actualizar las propiedades que paso a la función. Esto funciona bien para propiedades directas en mi mainSchema pero no en mi childSchema . Sobrescribe toda la propiedad secundaria con el objeto parcial proporcionado por mi solicitud.

Así que mi objeto de actualización se parece a esto

 const updates = { child: { childProperty2: 'Example2' } }

¿Cómo puedo actualizar solo childProperty2 sin eliminar childProperty ? En este ejemplo, sería fácil actualizar cada propiedad por separado, pero los objetos del mundo real son mucho más grandes y se pueden anidar en varios niveles.

Intenté usar la desestructuración pero parece que no funciona.

 const example = MainSchema.findOne({_id}) if (updates.child) example.child = {...example.child, ...updates.child} // Does not work

¿Hay una solución para eso en mongoose (6.0)?

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

0

Cambia tu código así:

 const updates = { "child.childProperty2": 'Example2' }
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