Обновление с предыдущим условием - findOneAndUpdate - Mongoose - PullRequest
0 голосов
/ 14 января 2020

Мне нужно добавить условие, чтобы обновить модель. В частности, у всех пользователей есть «роль». Только пользователи с правами администратора могут изменять данные других пользователей, кроме своей собственной «роли». Например, я пользователь А, и я «админ». Я могу изменить данные пользователя B, включая его роль. Но я не могу изменить свою «роль». В этом случае пользователь A не может изменять роль пользователя 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 ()? В каком случае, как я могу это сделать, используя промежуточное программное обеспечение pre hook?

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...