Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

erro - livroDao.buscaPorId is not a function

aparece este erro quando tento editar TypeError: livroDao.buscaPorId is not a function

mas nao sei como resolver isto :(

rotas.js

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

module.exports = (app) => { //exporta dos modulos uma função capaz de receber um parametro de app
    app.get('/', function(req, resp) {
        resp.send(
            `
                <html>
                    <head>
                        <meta charset="utf-8">
                    </head>
                    <body>
                        <h1> Livros </h1>
                    </body> 
                </html>
            `
        );
    });

    app.get('/livros', function(req, resp) {

        const livroDao  = new LivroDao(db);

        livroDao.lista()
                .then(livros => resp.marko( //recebe a lista de livros e envia para a pagina de listagem com o metodo resp.marko
                    require('../views/livros/lista/lista.marko'), //importação do arquivo que vai exibir quando fizer a requisição
                    { //contem informações pra tela que sera carregada
                        livros: livros //passa livros que é o parametro recebido pelo metodo then
                    }

            ))
            .catch(erro => console.log(erro)); //é executado quando acontece algum erro no processamento de uma Promisse     
    });

    app.get('/livros/form', function(req, resp) {
        resp.marko(require('../views/livros/form/form.marko'), { livro: {} });
    });

    app.get('/livros/form/:id', function(req, resp) {
        const id = req.params.id;
        const livroDao = new LivroDao(db);

        livroDao.buscaPorId(id)
            .then(livro => 
                resp.marko(
                    require('../views/livros/form/form.marko'),
                    { livro: livro }
                )
            )
            .catch(erro => console.log(erro));

    });

    app.post('/livros', function(req, resp) {
        console.log(req.body);

        const livroDao  = new LivroDao(db);

        livroDao.adiciona(req.body)
                .then(resp.redirect('/livros')) //utiliza a resposta para invocar um metodo redirect() que identificar a rota que se quer acionar 
                .catch(erro => console.log(erro)); //é executado quando acontece algum erro no processamento de uma Promisse     
    });

    app.delete('/livros/:id', function(req, resp) {
        const id = req.params.id; //busca o id dentro dos parametros da requisição

        const livroDao = new LivroDao(db); //responsavel por fazer o acesso ao banco de dados
        livroDao.remove(id) //chama o metodo de remoção do livroDao recebendo o id
            .then(() => resp.status(200).end()) //devolve o status do http de valor 200, significa que deu certo
            .catch(erro => console.log(erro))
    })

}
form.marko 

<html>
    <body>
        <h1>Cadastro de livros</h1>

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

            <input type="hidden" id="id" name="id" value="${data.livro.id}" />

            <div>
                <label for="titulo">Titulo:</label>
                <input type="text" id="titulo" name="titulo" value="${data.livro.titulo}" placeholder="coloque o titulo" />
            </div>
            <div>
                <label for="preco">Preço:</label>
                <input type="text" id="preco" name="preco" value="${data.livro.preco}" placeholder="150.25" />
            </div>
            <div>
                <label for="descricao">Descrição:</label>
                <textarea cols="20" rows="10"  id="descricao" name="descricao" value="${data.livro.descricao}" placeholder="fale sobre o livro"></textarea>
            </div>

            <input type="submit" value="Salvar" />
        </form>
    </body>
</html>
1 resposta
solução!

Boa noite, Amanda! Como vai?

Esse erro ocorre quando tentamos invocar um método/função que não existe! Sendo assim, provavelmente vc deve ter esquecido de implementar o método buscaPorId() na classe LivroDao como visto nessa atividade!

Dê uma olhada nela e veja se te ajuda! Qualquer coisa é só falar!

Grande abraço e bons estudos, minha aluna!