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

Erro no envio requisição

Boa noite.

Quando faço a requisição para a minha API está voltando este erro. Estou usando o MySql versão 8.0.17

  throw err; // Rethrow non-MySQL errors
  ^

Error: ER_BAD_FIELD_ERROR: Unknown column '{ "forma_de_pagamento": "payfast", "valor": 10.98, "moeda": "BRL", "descricao": "criando um pagamento"}' in 'field list'

4 respostas

Luiz, boa tarde!

Parece que está sendo passado o objeto em si, para o banco e não suas chaves e valores!

Você pode compartilhar comigo seu código para que eu possa analisar?

Aguardo sua resposta e bons estudos!

Opa boa noite Felipe.

Segue abaixo os códigos

arquivo connectionFactory.js

var mysql = require('mysql');

function createDBConnection(){
    return mysql.createConnection({
        host: 'localhost',
        user: 'root',
        password: '1234',
        port: '3307',
        database: 'payfast'
    });
}

module.exports = function() {
    return createDBConnection;
}

arquivo PagamentoDao.js

function PagamentoDao(connection) {
    this._connection = connection
}

PagamentoDao.prototype.salva = function(pagamento, callback) {
    this._connection.query('INSERT INTO PAGAMENTOS SET ?', pagamento);
}

PagamentoDao.prototype.lista = function(callback) {
    this._connection.query('SELECT * FROM PAGAMENTOS', callback);

}

PagamentoDao.prototype.buscaPorId = function(callback){
    this._connection.query("SELECT * FROM PAGAMENTOS WHERE ID = 1");
}
module.exports = function() { return PagamentoDao;};

arquivo pagamento.js

module.exports = function(app){
    app.get('/pagamentos', function(req, resp){
        console.log('Recebida requisicao de teste na porta 3000.');
        resp.send('OK');
    });

    app.post('/pagamentos/pagamento', function(req, res) {
        var pagamento = req.body;
        console.log('processando uma requisicao de um novo pagamento');

        /*pagamento.status = "CRIADO";
        pagamento.data = new Date;*/

        var connection = app.persistencia.connectionFactory();

        var pagamentoDao = new app.persistencia.PagamentoDao(connection);

        pagamentoDao.salva(pagamento, function(erro, resultado){
            console.log('pagamento criado');
            res.json(pagamento);
        })

        res.send(pagamento);
    });
}

Luiz, boa tarde!

Eu resolvi alterando a porta para: 80


function createDBConnection(){
    return mysql.createConnection({
        host: 'localhost',
        user: 'root',
        password: '1234',
        port: '80',
        database: 'payfast'
    });
}

Isso ocorre porque o 3307 é usado pelo proxy, ai você teria que adicionar seu ip numa whitelist, seria um trabalho gigante, alterar para 80 é um caminho mais rápido para você continuar o curso

Espero ter ajudado e bons estudos!

solução!

Boa noite Felipe.

Funcionou aqui, eu comi bola em um parametro da função salva.

Estava assim:

PagamentoDao.prototype.salva = function(pagamento, callback) { this._connection.query('INSERT INTO PAGAMENTOS SET ?', pagamento); }

Deveria estar assim: PagamentoDao.prototype.salva = function(pagamento, callback) { this._connection.query('INSERT INTO PAGAMENTOS SET ?', pagamento, callback); }

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