Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Rota post/pet enviando req.body vazio

Olá. Estou usando o node v. 8.10.0, na parte de da rota de /pet, Pet.adiciona, percebi que o body está indo vazio para o model, apresentando o erro no INSERT INTO pets SET ?. Como proceder para consegui pegar os dados do body.

petsController.js
const Pet = require('../models/pets');

module.exports = app => {
    app.post('/pet', (req, res) => {
        const pet = req.body
        console.log(pet)
        Pet.adiciona(pet, res)
    })

    app.get('/pet', (req, res) => {
        Pet.lista(res)
    })
}
pets.js
const conexao = require('../infraestrutura/conexao');

class Pet {

    adiciona(pet, res) {
        const sql = 'INSERT INTO pets SET ?'

        conexao.query(sql, pet, erro => {
            if(erro) {
                console.log(erro)
                res.status(400).json(erro)
            } else {
                res.status(201).json(pet)
            }
        })
    }
    lista(res){
        const sql = 'SELECT * FROM pets'

        conexao.query(sql, (erro, resultados) => {
            if (erro){
                res.status(400).json(erro)
            } else {
                res.status(200).json(resultados)
            }
        })
    }
}
module.exports = new Pet()

ERRO:

{
  "code": "ER_PARSE_ERROR",
  "errno": 1064,
  "sqlMessage": "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1",
  "sqlState": "42000",
  "index": 0,
  "sql": "INSERT INTO pets SET "
}

Para o atendimento, usa a mesma sintaxe do INSERT TO ... e não apresenta esse erro. No get do Pet ele funciona normal, não aparenta ser problema de rotas.

Valeu.

2 respostas
solução!

Olá Cleyton, tudo bem com você?

Peço perdão pela demora, pois estava cuidando de algumas outras coisas para a Alura, realmente não há nada de errado na lógica do seu código, você conseguiu resolver?

Eu vi que você colocou um console.log(pet), ele estava vindo nulo, ou estava os dados normalmente?

A única razão que eu enxergo para ter dado esse problema é no custom-express.js não ter utilizado o:

 app.use(bodyParser.json())

Dessa forma a requisição não iria vir com os dados e consequentemente não haveria a inserção correta no banco de dados!

Abraços e Bons Estudos :)

Olá, tudo bem.

Realmente era esse o problema, muito obrigado, agora posso continuar com os estudos. 

Valeu.