Atualização com condição anterior - findOneAndUpdate - Mongoose

votos
0

Eu preciso adicionar uma condição prévia para atualizar um modelo. Em concreto, todos os usuários têm um papel. Apenas os usuários admin pode modificar os dados outros usuários, senão o seu papel. Por exemplo, eu sou utilizador A, e eu sou admin. Posso modificar os dados do usuário B, incluindo o seu papel. Mas eu não posso modificar o meu próprio papel. Neste caso do usuário Um não pode modificar uma função do usuário. Até agora eu tenho tudo, mas eu não posso adicionar a condição na função de atualização.

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

O melhor que eu podia fazer era o seguinte:

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

Resumindo, posso colocar a condição no findOneAndUpdate ()? Em alguns casos, como eu poderia fazê-lo usando pré middleware gancho?

Obrigado!

Publicado 14/01/2020 em 00:03
fonte usuário
Em outras línguas...                            

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