Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

157
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!