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

"app.persistencia.PagamentoDao is not a constructor" Onde está o erro?

Boa noite, Estou passando certa dificuldade para encontrar o erro. Segue o código:

persistenca\PagamentoDao.js

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

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

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

PagamentoDao.prototype.buscaPorID = function(id, callback){
  this._connection.query('select * from pagamentos where id = ?', [id], callback);
}

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

controllers\pagamentos.js

module.exports = function(app){

  app.get('/pagamentos', function(req, res){

    console.log('recebida requisição de teste');
    res.send('OK!');
  });

  app.post('/pagamentos/pagamento', function(req, res){
    var pagamento = req.body;
    console.log("processando um 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); 
    });
  });
}
3 respostas

Oi Everson, como está sendo exportada uma função, que retorna a função construtora, acho que você precisa de um parênteses adicional ali:

new app.persistencia.PagamentoDao()(connection);
solução!

Oi, obrigado pelo retorno. "Quando usei a sua dica, ele retornou TypeError:(intermediate value) is not a function"

Mas acabei descobrindo que meu arquivo estava com a nomenclatura errada como "PagamentosDAO.js", sendo o correto "PagamentosDao.js".

Corrigi e resolveu o problema. Bobeada minha.

Boa Everson, bons estudos!