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

Erro ao salvar pagamento

Estou tendo um problema ao salvar meu pagamento, o mesmo informa que não foi possível carregar o propriedade salva

segue erro

Servidor rodando na porta 3000.
PROCESSANDO UMA REQUISIÇÃO DE UM NOVO PAGAMENTO!
TypeError: Cannot read property 'salva' of undefined
    at C:\Users\Ciro S. de Azevedo\web\payfast\controllers\pagamentos.js:15:50
    at Layer.handle [as handle_request] (C:\Users\Ciro S. de Azevedo\web\payfast\node_modules\express\lib\router\layer.js:95:5)
    at next (C:\Users\Ciro S. de Azevedo\web\payfast\node_modules\express\lib\router\route.js:137:13)
    at Route.dispatch (C:\Users\Ciro S. de Azevedo\web\payfast\node_modules\express\lib\router\route.js:112:3)
    at Layer.handle [as handle_request] (C:\Users\Ciro S. de Azevedo\web\payfast\node_modules\express\lib\router\layer.js:95:5)
    at C:\Users\Ciro S. de Azevedo\web\payfast\node_modules\express\lib\router\index.js:281:22
    at Function.process_params (C:\Users\Ciro S. de Azevedo\web\payfast\node_modules\express\lib\router\index.js:335:12)
    at next (C:\Users\Ciro S. de Azevedo\web\payfast\node_modules\express\lib\router\index.js:275:10)
    at C:\Users\Ciro S. de Azevedo\web\payfast\node_modules\body-parser\lib\read.js:129:5
    at invokeCallback (C:\Users\Ciro S. de Azevedo\web\payfast\node_modules\raw-body\index.js:262:16)

meu PagamentoDAO da pasta persitencia


function PagamentoDao(connection) {

    this._connection = connection;
}

PagamentoDao.prototype.lista = function (callback) {
   this._connection.query('select * from pagamentos', callback);
}

PagamentoDao.prototype.salva = function(pagamento,callback){
    this._connection.query('insert into pagamentos set ?',pagamento,callback);
}

PagamentoDao.prototype.buscaPorId = function(id,callback){
  this._connection.query('select * from pagamentos where id='+id, callback);
}


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

minha rota

module.exports = function (app) {
    app.get("/pagamentos", function (req, res) {
        res.send("ok");
    });

    app.post('/pagamentos/pagamento', function (req, res) {
        var pagamento = req.body;
        console.log("PROCESSANDO UMA REQUISIÇÃO DE UM NOVO PAGAMENTO!");

        pagamento.status = 'CRIADO';
        pagamento.data = new Date;
        var connection = app.persistencia.connectionFactory();
        var pagamentoDao = app.persistencia.PagamentoDAO(connection);

        app.persistencia.PagamentoDAO(connection).salva(pagamento, function (exception, result) {
            console.log('pagamento criado: ' + result);
            res.json(pagamento);
        });

        res.send(pagamento);
    })

}

meu express

var express = require('express');
var consign = require('consign');
var bodyParser = require('body-parser');

module.exports = function () {
  var app = express();
  app.use(bodyParser.urlencoded({extended:true}));
  app.use(bodyParser.json());
 consign()
     .include('controllers')
     .then('persistencia')
     .into(app);
    return app;
}
4 respostas

Debug até essa linha: pagamentos.js:15:50

Se estiver usando o Chrome, basta dar F12, encontrar o pagamentos.js e colocar o debug onde o .salva é chamado. Complicado analisar assim, mas deve ser besteira amigo!

alterei meu metodo de salvar para , porém segue o erro

pagamentoDao.salva(pagamento, function (exception, result) {
            console.log('pagamento criado: ' + result);
            res.json(pagamento);
        });
solução!

Boa noite!

Nesta linha está faltando o new:

var pagamentoDao = app.persistencia.PagamentoDAO(connection);

Altere para:

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

Erá isso mesmo!