Actualización de la condición anterior - findOneAndUpdate - Mangosta

votos
0

Tengo que añadir una condición previa para actualizar un modelo. En concreto, todos los usuarios tienen un papel. Sólo los usuarios admin puede modificar los datos de otros usuarios, excepto a su papel. Por ejemplo, yo soy el usuario A, y yo soy admin. Puedo modificar los datos del usuario B, incluyendo su papel. Pero no puedo modificar mi propia papel. En este caso el usuario A no puede modificar el papel de un usuario. Hasta ahora tengo todo, pero no puedo añadir la condición en la función de actualización.

  User.findOneAndUpdate(req.params.id, req.body, { new: true }, (err, result) => {
  if (err) console.log(err);
  res.send(result);
})

Lo mejor que podía hacer era la siguiente:

exports.update = function (req, res) {

  const prevRole = req.user.role;

  if (req.user._id.toString() === req.params.id) {
    if (prevRole !== req.body.role) {
      res.json({ message: Can not update own user role. })
    }
  } else {
    User.findOneAndUpdate(req.params.id, req.body, { new: true }, (err, result) => {
      if (err) console.log(err);
      res.send(result);
    })
  }
}

En resumen, puedo colocar la condición en el findOneAndUpdate ()? En algún caso, ¿cómo podría hacerlo utilizando el middleware pre gancho?

¡Gracias!

Publicado el 13/01/2020 a las 22:03
fuente por usuario
En otros idiomas...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more