Обновление с предыдущим условием - findOneAndUpdate - Mongoose

голоса
0

Мне нужно добавить условие предыдущего обновления модели. Конкретно, все пользователи имеют «роль». Только «администратора» пользователи могут изменять данные других пользователей, кроме их собственной «роли». Например, я пользователь А, и я «админ». Я могу изменить данные пользователя B, в том числе его роли. Но я не могу изменить свою собственную «роль». В этом случае пользователь А не может изменить роль пользователя A. До сих пор у меня есть все, но я не могу добавить условие в функции обновления.

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

Лучшее, что я мог сделать следующее:

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

Подводя итог, я могу поставить условие в findOneAndUpdate ()? В некоторых случаях, как я мог бы сделать это с помощью предварительно крючках промежуточного ПО?

Спасибо!

Задан 14/01/2020 в 00:03
источник пользователем
На других языках...                            

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