Bijwerken met vorige toestand - findOneAndUpdate - Mongoose

stemmen
0

Ik moet een voorwaarde voorafgaand aan een model te werken toe te voegen. Concreet, alle gebruikers hebben een rol. Only admin gebruikers kunnen andere gebruikers gegevens te wijzigen, met uitzondering van hun eigen rol. Bijvoorbeeld, ik ben gebruiker A, en ik ben admin. Ik kan de gebruiker B gegevens te wijzigen, met inbegrip van zijn rol. Maar ik kan niet wijzigen mijn eigen rol. In dit geval gebruiker A geen rol gebruiker te wijzigen. Tot dusver heb ik alles, maar ik kan niet aan de voorwaarde toe te voegen in de update-functie.

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

Het beste wat ik kon doen was de volgende:

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

Samenvattend kan ik de voorwaarde in de findOneAndUpdate ()? In sommige gevallen, hoe zou ik het doen met behulp van vooraf haak middleware?

Dank je!

De vraag is gesteld op 14/01/2020 om 00:03
bron van user
In andere talen...                            

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