Update mit vorherigem Zustand - findOneAndUpdate - Mongoose

stimmen
0

Ich brauche eine Bedingung hinzuzufügen vorherige, ein Modell zu aktualisieren. Konkret haben alle Benutzer eine „Rolle“. Es können nur „admin“ Benutzer andere Benutzer Daten ändern, mit Ausnahme ihrer eigenen „Rolle“. Zum Beispiel bin ich Benutzer A, und ich bin „admin“. Ich kann Benutzer-B-Daten, einschließlich seiner Rolle ändern. Aber ich kann meine eigene „Rolle“ nicht ändern. In diesem Fall Benutzer ändern A nicht eine Rolle des Benutzers. Bisher habe ich alles, aber ich kann nicht die Bedingung in der Update-Funktion hinzuzufügen.

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

Das Beste, was ich tun konnte, war die folgende:

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

Zusammenfassend kann ich stelle den Zustand, in dem findOneAndUpdate ()? In einigen Fällen, wie könnte ich es tun Pre Haken Middleware?

Vielen Dank!

Veröffentlicht am 14/01/2020 um 00:03
quelle vom benutzer
In anderen Sprachen...                            

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