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

Failed to load resource: the server responded with a status of 500 (Internal Server Error)

Olá, Consigo remover, mas quando eu recarrego a página o livro volta a aparecer na tabela. Acredito que seja algum problema no banco de dados mas não consigo resolver...

realizei o passo a passo do vídeo e li todos os tópicos deste fórum dessa aula e ainda não consegui encontrar o problema.

Link do pojeto no github: https://github.com/Kalliandru/casadocodigoAula5Delete.git

Ajudem por favor! Agradeço desde já! ^^

4 respostas

o Erro que aparece no log é :

ReferenceError: Cannot access 'livroDao' before initialization at C:\Users\Kalli\Alura\casadocodigo\src\app\rotas\rotas.js:54:30 at Layer.handle [as handle_request] (C:\Users\Kalli\Alura\casadocodigo\node_modules\express\lib\router\layer.js:95:5) at next (C:\Users\Kalli\Alura\casadocodigo\node_modules\express\lib\router\route.js:137:13) at Route.dispatch (C:\Users\Kalli\Alura\casadocodigo\node_modules\express\lib\router\route.js:112:3) at Layer.handle [as handle_request] (C:\Users\Kalli\Alura\casadocodigo\node_modules\express\lib\router\layer.js:95:5) at C:\Users\Kalli\Alura\casadocodigo\node_modules\express\lib\router\index.js:281:22 at param (C:\Users\Kalli\Alura\casadocodigo\node_modules\express\lib\router\index.js:354:14) at param (C:\Users\Kalli\Alura\casadocodigo\node_modules\express\lib\router\index.js:365:14) at Function.process_params (C:\Users\Kalli\Alura\casadocodigo\node_modules\express\lib\router\index.js:410:3) at next (C:\Users\Kalli\Alura\casadocodigo\node_modules\express\lib\router\index.js:275:10).

Oi Kalliandru , pelo que eu vi, a mensagem informa livroDao.remove is not a function. Se vc for no arquivo livro-dao.js provavelmente não existe uma função remove.

Até aqui não entendi a importância do arquivo remove-livro.js pois se vc recarregar a tela de listagem, o livro excluído irá aparecer de novo.

Então você tem que resolver esse erro que adicionando a função que de fato vai excluir o livro do banco. Eu fiz dessa forma porém não sei se está certo. Mas excluiu o livro e não houve erro.

Se alguém puder me explicar o pq do arquivo remove-livro.js agradeço.

remove(id) { return new Promise((resolve, reject) => {

        this._db.run(`
        DELETE FROM livros where id = ?
        `,
        [
          id
        ], 
        function (err) {
            if (err) {
                console.log(err);
                return reject('Não foi possível adicionar o livro!');
            }

            resolve();
        } 
        )

    });
} 
solução!

No seu deu um erro na rota né? Agora que vi. Vê se está assim.

app.delete('/livros/:id', function(req, resp){ const id = req.params.id;

    const  livroDao = new LivroDao(db);
    livroDao.remove(id)
            .then(() => resp.status(200).end())
            .catch(erro => console.log(erro));


});

Se estiver tente remover novamente. Se der de novo erro 500 provavelmente a resposta que coloquei primeiro será o que resolve.

É esse o problema! Estava na rota.

Eu declarei "new livroDao" com l minúsculo, sendo que o nome da classe é com maiúsculo. Por isso não funcionava!

(sabia que era coisa tonta rs).

Muito obrigado!!!