Estou fazendo método POST no postman formato JSON assim:
{
"nome": "Pedro Henrique",
"email": "pedro@gmail.com",
"senha": "777888999"
}Porém dá erro código 500. Como seria?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Estou fazendo método POST no postman formato JSON assim:
{
"nome": "Pedro Henrique",
"email": "pedro@gmail.com",
"senha": "777888999"
}Porém dá erro código 500. Como seria?
Oi Ian.
A princípio está correto o Json. O erro 500 pode indicar um problema no servidor ou numa configuração específica. Se você puder dar mais detalhes, talvez a gente consiga ajudar mais.
O método post:
const Post = require('./posts-modelo');
module.exports = {
adiciona: async (req, res) => {
try {
const post = new Post(req.body);
await post.adiciona();
res.status(201).send(post);
} catch (erro) {
if (erro instanceof InvalidArgumentError) {
res.status(422).json({ erro: erro.message });
} else if (erro instanceof InternalServerError) {
res.status(500).json({ erro: erro.message });
} else {
res.status(500).json({ erro: erro.message });
}
}
},O erro:
(node:16027) UnhandledPromiseRejectionWarning: ReferenceError: InvalidArgumentError is not defined
at adiciona (/home/ianmichael/Documentos/Alura/Node-JWT/src/posts/posts-controlador.js:13:33)
at Layer.handle [as handle_request] (/home/ianmichael/Documentos/Alura/Node-JWT/node_modules/express/lib/router/layer.js:95:5)
at next (/home/ianmichael/Documentos/Alura/Node-JWT/node_modules/express/lib/router/route.js:137:13)
at next (/home/ianmichael/Documentos/Alura/Node-JWT/node_modules/express/lib/router/route.js:131:14)
at Route.dispatch (/home/ianmichael/Documentos/Alura/Node-JWT/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/home/ianmichael/Documentos/Alura/Node-JWT/node_modules/express/lib/router/layer.js:95:5)
at /home/ianmichael/Documentos/Alura/Node-JWT/node_modules/express/lib/router/index.js:281:22
at Function.process_params (/home/ianmichael/Documentos/Alura/Node-JWT/node_modules/express/lib/router/index.js:335:12)
at next (/home/ianmichael/Documentos/Alura/Node-JWT/node_modules/express/lib/router/index.js:275:10)
at urlencodedParser (/home/ianmichael/Documentos/Alura/Node-JWT/node_modules/body-parser/lib/types/urlencoded.js:100:7)
(node:16027) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:16027) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
Então Ian.
Essa mensagem InvalidArgumentError is not defined quer dizer que esse objeto não foi encontrado. Tente o seguinte:
const Post = require('./posts-modelo');
//ADICIONE ISSO
class InvalidArgumentError extends Error {
constructor(message) {
super(message);
this.name = InvalidArgumentError.name;
}
}
module.exports = {
adiciona: async (req, res) => {
try {
const post = new Post(req.body);
await post.adiciona();
res.status(201).send(post);
} catch (erro) {
if (erro instanceof InvalidArgumentError) {
res.status(422).json({ erro: erro.message });
} else if (erro instanceof InternalServerError) {
res.status(500).json({ erro: erro.message });
} else {
res.status(500).json({ erro: erro.message });
}
}
},Isso é apenas um teste se funcionar você vai precisar encontrar no seu código onde foi declarado a class InvalidArgumentError.
Espero que te ajude!