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