Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Bug] Método PUT permite deixar em branco campo obrigatório no Schema

Jacqueline, reparei que ao fazer uma requisição do tipo PUT e deixar em branco algum atributo requerido do livroSchema o registro é atualizado com sucesso, mas não deveria.

Isto é uma falha no Mongoose? ou algo que deveria ser implementado para impedir esta alteração? Desta forma os dados no banco podem ficar inconsistentes.

Exemplo get por id: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Exemplo put removendo o título: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Exemplo novo get por id: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta
solução!

Olá Diego! Tudo bem com você?

Essa não é uma falha no Mongoose. O comportamento padrão do Mongoose é permitir que você atualize apenas os campos que estão presentes na requisição PUT. Isso significa que se você não enviar um valor para um campo obrigatório, o Mongoose simplesmente não fará nenhuma alteração nesse campo.

Para evitar essa situação e garantir que os campos obrigatórios não fiquem em branco durante uma atualização, você pode adicionar validações personalizadas ao seu Schema.

Por exemplo, poderia criar uma condição para verificar se o campo foi preenchido, caso esteja, você faz a atualização no banco, caso não, retorne um erro informando que deve ser inserido algo no campo para a atualização.

Dessa forma, se você tentar fazer uma requisição PUT sem enviar o campo "titulo" ou outro campo, o Mongoose retornará um erro informando que o campo é obrigatório.

Espero ter ajudado a esclarecer essa questão! Se tiver mais alguma dúvida, estou à disposição.

Bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software