Aggiornamento con condizione precedente - findOneAndUpdate - Mongoose

voti
0

Ho bisogno di aggiungere una condizione precedente per aggiornare un modello. In concreto, tutti gli utenti hanno un ruolo. Solo Admin gli utenti possono modificare i dati di altri utenti, che il loro ruolo. Per esempio, io sono l'utente A, e sono admin. Posso modificare i dati degli utenti B, compreso il suo ruolo. Ma non riesco a modificare il mio ruolo. In questo caso A utente non può modificare il ruolo di un utente. Finora ho tutto, ma non posso aggiungere la condizione nella funzione di aggiornamento.

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

Il meglio che potessi fare era la seguente:

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);
    })
  }
}

Riassumendo, posso inserire la condizione nella findOneAndUpdate ()? In alcuni casi, come potrei farlo utilizzando pre middleware gancio?

Grazie!

È pubblicato 13/01/2020 alle 22:03
fonte dall'utente
In altre lingue...                            

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