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

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

0

Cambia tu código así:

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