2
respostas

Controlador para listagem de livros - Não instancia livroDao

Boa noite, segue atualização, o código agora avança até o log de número 005 e exibe no console a mensagem listada abaixo, deixei a postagem original para fins de pesquisa para outros colegas que possam ter o mesmo problema, segue a mensagem atual do console, grato:

TypeError: Cannot read property 'render' of undefined at ServerResponse.response.marko (/home/haguenmcleod/Backup20190927001/CursosInformatica/NodeJs/casaDoCodigoProjetoCursoModulo2/node_modules/marko/src/express.js:58:29) at livroDao.lista.then.livros (/home/haguenmcleod/Backup20190927001/CursosInformatica/NodeJs/casaDoCodigoProjetoCursoModulo2/src/app/controladores/livro-controlador.js:11:46) at

Mensagem original abaixo:

Boa noite, estou tentando terminar o primeiro controlador do curso, que deveria retornar na tela a listagem após o submit de um novo livro, entretanto o método lista(), da classe LivroControlador, parece não executar o comando const livroDao = new LivroDao(db); , conforme logs adicionados no código postado abaixo, esta parando no "log 003" e exibindo mensagem de que houve um problema na tela da aplicação, seguem os códigos, grato:

app.get('/livros', livroControlador.lista());

const LivroDao = require('../infra/livro-dao');
const db = require('../../config/database');

class LivroControlador{

    lista(){
        return function(req, resp) {
            console.log('003 - Entrou no controlador da listagem de livros ########################');
            const livroDao = new LivroDao(db);
            const erros = validationResult(req);
            console.log('004 - #################################################'),
            livroDao.lista()
                        .then(livros => resp.marko(
                        console.log('005 - #################################################'),
                        require('../views/livros/lista/lista.marko'),
                        {
                            livros: livros
                        }
                    ))
                    .catch(erro => console.log(erro));
        };
    }
}

module.exports = LivroControlador;

action do form.marko abaixo:

 <form action="/livros" method="post">
2 respostas

Bom dia, Bruno! Como vai?

Vc poderia compartilhar o projeto no github e mandar o link aqui? Assim poderei te ajudar de forma mais efetiva.

Outra coisa, o erro ocorre no momento da submissão do formulário de cadastro de novo livro, é isso?

Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!

Boa noite, obrigado pela resposta, abaixo seguem link com o projeto no git e o método lista() com os consoles.log indicando até aonde o código esta avançando, grato:

const LivroDao = require('../infra/livro-dao');
const db = require('../../config/database');

class LivroControlador{

    lista(){
        return function(req, resp) {
            console.log('003 - Entrou no controlador da listagem de livros ########################');

            const livroDao = new LivroDao(db);
            livroDao.listaLivros()
                        .then(livros => resp.marko(
                        console.log('004 - Entrou no metodo para listar os livros apos insercao #########################'),
                        require('../views/livros/lista/lista.marko'),
                        console.log('005 - Chegou ate antes do loop que lista os livros #########################'),
                        {
                            livros: livros
                        }
                    ))
                    .catch(erro => console.log(erro));
        };
    }
}

module.exports = LivroControlador;

Saída do console:

001 - Entrou no get da inclusao de livros ######################## { titulo: '123456', preco: '543534534', descricao: '432423423423423' } 003 - Entrou no controlador da listagem de livros ######################## 004 - Entrou no metodo para listar os livros apos insercao ######################### 005 - Chegou ate antes do loop que lista os livros ######################### TypeError: Cannot read property 'render' of undefined at ServerResponse.response.marko (/home/haguenmcleod/Backup20190927001/CursosInformatica/NodeJs/casaDoCodigoProjetoCursoModulo2/node_modules/marko/src/express.js:58:29) at livroDao.listaLivros.then.livros (/home/haguenmcleod/Backup20190927001/CursosInformatica/NodeJs/casaDoCodigoProjetoCursoModulo2/src/app/controladores/livro-controlador.js:20:46) at

Link para o projeto no git: https://github.com/HaguenMcLeod/repositorioPublicoHaguen20190925001/blob/master/casaDoCodigoProjetoCursoModulo2.zip

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