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

391
Vistas
MongoServerError: realizar una actualización en la ruta '_id' modificaría el campo inmutable '_id'

Estaba tratando de hacer una aplicación CRUD en Nodejs usando MongoDB, pero cuando escribí la parte de actualización y envié el envío usando cartero, muestra el error en la terminal que

 **MongoServerError: Performing an update on the path '_id' would modify the immutable field '_id'**

Aquí está mi código para actualizar una entrada bu _id en mongo db

 router.put('/api/employee/edit/:id' ,(req,res) =>{ const emp = new Employee({ name:req.body.name, email:req.body.email, salary:req.body.salary }); Employee.findByIdAndUpdate(req.params.id, {$set: emp},(err,data) => { if(!err){ res.status(200).json({code:200,message:"Employee updated successfully", updateEmployee:data }) } else{ console.log(err); } }) })
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Supongo que dar todo el objeto como argumento a $set significa que intentará modificar todas sus propiedades, incluido _id , que no debe modificarse y no se ha configurado en el objeto. Intente especificar las propiedades para modificar por separado:

 Employee.findByIdAndUpdate(req.params.id, {$set: { name:req.body.name, email:req.body.email, salary:req.body.salary }},(err,data) => {
about 4 years ago · Juan Pablo Isaza Denunciar

0

Está creando un nuevo documento de Employee y desea actualizar el actual con el nuevo. No puede hacer eso ya que eso también intentará anular _id del documento. En lugar de crear un nuevo documento de Employee , solo debe actualizar uno existente con nuevos datos:

 router.put('/api/employee/edit/:id', (req, res) => { Employee.findByIdAndUpdate(req.params.id, { name: req.body.name, email: req.body.email, salary: req.body.salary }, { new: true }, (err, data) => { if (!err) { res.status(200).json({ code: 200, message: "Employee updated successfully", updateEmployee: data }) } else { res.status(400).json({ code: 400, message: "Employee updated failed." }) } }) })
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