Aktualizace s předchozím stavem - findOneAndUpdate - Mongoose

hlasů
0

Musím se přidat podmínku předchozí aktualizaci modelu. Do betonu, všichni uživatelé mají „roli“. Jen „admin“ mohou uživatelé upravovat ostatní uživatelé dat, kromě své vlastní „role“. Například jsem uživatel A, a já jsem „admin“. Mohu upravovat data uživatele B, včetně jeho role. Ale nemohu změnit svůj vlastní „roli“. V tomto případě uživatel A nemůže změnit roli uživatele A. Zatím mám všechno, ale nemohu přidat podmínku ve funkci aktualizace.

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

Nejlepší, co jsem mohl udělat, bylo následující:

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

Shrneme-li, můžu umístit stav v findOneAndUpdate ()? V některých případech, jak bych mohl udělat to pomocí předem háček middleware?

Děkuji!

Položena 14/01/2020 v 00:03
zdroj uživatelem
V jiných jazycích...                            

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