2
respostas

Problemas com refatoramento

Pessoal, eu estava listando bem o que eu tinha no banco. Eu desenvolvo minha propria app e não pus o carregamento automatico.

vejam como ficou meus modulos

var pessoas = require('../infra/pessoas')();

router.get('/list', function(req, res, next) {
  //var mysql = require('../infra/ConnectionFactory');
  var conn = connFactory();
  pessoas.listar(conn,function(err,results){
    res.send(results);
  });
  conn.end(); 
});

agora o pessoa.listar()

module.exports = function(){
    this.lista = function(conn,callback){
       return  conn.query('select * from pessoas', callback);
    }
}

o erro é: Cannot read property 'listar' of undefined

alguem pode me dar uma força?

2 respostas

Oi Marcos, tudo bem? O this dentro do module.exports não está referenciando o objeto pessoas, e sim uma outra coisa. O uso do this é sempre perigoso por que ele varia bastante.

A solução mais simples que vejo agora é você fazer que o module.exports retorne um objeto onde o lista seja uma propriedade. Olha:

module.exports = function(){
  return {
      lista: function(conn,callback){
         return  conn.query('select * from pessoas', callback);
      }
  };
}

Apenas uma observação, o módulo exporta "lista", mas, na rota onde ele é utilizado ("/list"), se está utilizando como "listar"