Oppdatering med tidligere tilstand - findOneAndUpdate - Mongoose

stemmer
0

Jeg må legge til en tilstand tidligere å oppdatere en modell. I betong, alle brukere har en rolle. Only admin brukere kan endre andre brukeres data uten sin rolle. For eksempel er jeg bruker A, og jeg er admin. Jeg kan endre brukerens B data, inkludert hans rolle. Men jeg kan ikke endre min egen rolle. I dette tilfellet bruker En kan ikke endre brukerens En rolle. Så langt jeg har alt, men jeg kan ikke legge til betingelsen i oppdateringsfunksjonen.

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

Det beste jeg kunne gjøre var følgende:

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

Oppsummering, kan jeg plassere tilstanden i findOneAndUpdate ()? I noen tilfeller, hvordan kunne jeg gjøre det ved hjelp av pre kroken mellomvare?

Takk skal du ha!

Publisert på 14/01/2020 klokken 00:03
kilden bruker
På andre språk...                            

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