2
respostas

Método adiciona() da classe LivroDao nao funciona inteiramente.

Boa noite.Estou com um pequeno problema ao adicionar os livros.O bloco de código que faz o post para o diretório /livros do arquivo rotas.js só funciona até a parte do console.log(req.body).Eu consigo ver no meu terminal que o livro foi adicionado, mas depois que o redirect me manda para o http://localhost:3000/livros, o livro que eu acabei de adicionar nao aparece no navegador.Ai abaixo estão os trechos dos códigos de rotas.js e do livro-dao.js:

rotas.js >>

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

...

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

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

      const livroDao = new LivroDao(db);
      livroDao.adiciona(req.body)
              .then(resp.redirect('/livros'))
              .catch(erro => console.log(erro));
  });

Trecho do livro-dao.js>>

class LivroDao{

    constructor(db){
        this._db = db;
    }

    adiciona(livro){
        return new Promise((resolve, reject) => {
            this._db.run(`
              INSERT INTO livros (
                    titulo,
                    preco,
                    descricao
              ) values (?, ?, ?)
              `,
              [
                livro.titulo,
                livro.preco,
                livro.descricao
              ],
              function(err) {
                  if (err) {
                      console.log(err);
                      return reject('Não foi possível adicionar o livro!');
                  }
                  resolve();
              }
            )
        });
    }
2 respostas

Boa noite, Antonio! Como vai?

No terminal onde vc está executando o projeto aparece alguma mensagem de erro ao tentar inserir o novo livro? Além disso, se vc puder disponibilizar o seu projeto via github eu poderei dar uma olhada melhor no que está acontecendo.

Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!

Então professor, depois que eu coloquei os outros métodos buscaPorId() e atualiza() no livro-dao e modifiquei os outros módulos do projeto, a listagem voltou ao normal e passou a exibir os livros.

    A única dúvida que tenho agora é com relação ao 
app.use('/estatico', express.static('src/app/public'))

. Por acaso é o middleware que consegue indicar para o lista.marko que o caminho para o módulo remove-livro.js esta no src/app/public/js ? Eu fiquei com essa dúvida pois na tag script do arquivo lista.marko, está :

<script src="/estatico/js/remove-livro.js">

ao invés de :

<script src="/src/app/public/js/remove-livro.js">

.Tirando isto, ta tudo certo, obrigado pela ajuda.