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

147
Vistas
cómo actualizar solo campos específicos y dejar otros con los valores anteriores en findandupdate con Mongoose

Creé una función de actualización usando Mongoose. Sin embargo, cada vez que actualizo los datos usando findOneAndUpdate. Actualiza solo los campos ingresados y hace que los demás ahora sean nulos o estén vacíos. Me gustaría que cuando el usuario esté actualizando y no actualice un archivo, permanezca como estaba antes en lugar de estar vacío ahora. esencialmente solo actualiza los campos ingresados.

aquí están mis rutas

 router.post("/updateStock", (req, res) => { const filter = {prodId: req.body.prodID} const update = req.body Product.findOneAndUpdate(filter, update, {new: true}).then((product) => { console.log("success"); res.send(product); }).catch(err => { console.log("err", err); res.status(500).send(err); }) });

aquí hay un ejemplo de req.body. Solo actualicé el título y la categoría en el frente, lo que significa que todo lo demás está en blanco. Cuando guarda en la base de datos, solo actualiza el título y la categoría y deja todo lo demás en blanco. Me gustaría que no inserte los espacios en blanco en la base de datos y deje los campos como están

 { prodId: 'iPhone 111001200', title: 'iPhone 11 Pro', manufacturer: '', catergory: 'Electronics', price: '', quantity: '' }

Aquí está mi modelo

 const mongoose = require("mongoose"); const Product = mongoose.model( "Product", new mongoose.Schema({ title: String, manufacturer: String, price: String, catergory: String, quantity: String, prodID: String, images: Array }) ); module.exports = Product;
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Algo como esto entonces:

 const update = {}; for (const key of Object.keys(req.body)){ if (req.body[key] !== '') { update[key] = req.body[key]; } } test.findOneAndUpdate(filter, {$set: update}, {new: true}).then((product) => { console.log("success"); res.send(product); }).catch(err => { console.log("err", err); res.status(500).send(err); })}

Debe usar $set solo para actualizar los campos que desea actualizar. En su caso, los campos que no son '' .

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