Mise à jour avec l'état précédent - findOneAndUpdate - Mongoose

voix
0

Je dois ajouter une condition préalable à mettre à jour un modèle. Concrètement, tous les utilisateurs ont un « rôle ». Seuls les utilisateurs « admin » peuvent modifier d'autres données des utilisateurs, à l'exception de leur propre « rôle ». Par exemple, je suis utilisateur A, et je suis « admin ». Je peux modifier les données B de l'utilisateur, y compris son rôle. Mais je ne peux pas modifier mon propre « rôle ». Dans ce cas l'utilisateur A ne peut pas modifier le rôle d'un utilisateur. Jusqu'à présent, j'ai tout, mais je ne peux pas ajouter la condition dans la fonction de mise à jour.

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

était la suivante le mieux que je pouvais faire:

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 résumé, je peux placer la condition dans le findOneAndUpdate ()? Dans certains cas, comment pourrais-je le faire en utilisant le middleware pré crochet?

Je vous remercie!

Créé 13/01/2020 à 22:03
source utilisateur
Dans d'autres langues...                            

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