1
resposta

redirect ao autlizar nao vai

ao fazer a atualizaçao no banco e redirecionar para livros, a tela so fica carregando, mas da pagina de formulario para livros funciona normal

 atualizar(livro)
      {
          return new Promise((resolve,reject)=>
          {
              this.db.run("update livros set titulo=?, preco = ?, descricao = ? where id = ?"
              ,[
                    livro.titulo,
                    livro.preco,
                    livro.descricao,
                    livro.id
              ]),
              function(erro,result)
              {
                  if(!erro)
                  {
                      resolve();
                  }
                  else
                  {
                      reject("deu me");
                  }
              }
          })
      }
    } 
 app.put('/livros',function(request,response){
        livro.atualizar(request.body)
        .then(()=>
            response.redirect('/livros')
        )
        .catch(()=>{
            console.log("deu um erro");
        })

    })
1 resposta

Olá Luan, tudo bem com você?

O problema está que você fechou a função de executar o banco de dados muito cedo, observe:

              this.db.run("update livros set titulo=?, preco = ?, descricao = ? where id = ?"
              ,[
                    livro.titulo,
                    livro.preco,
                    livro.descricao,
                    livro.id
              ]),

Na verdade teria que ser:

            this._db.run(`
                UPDATE livros SET
                titulo = ?,
                preco = ?,
                descricao = ?
                WHERE id = ?
            `,
            [
                livro.titulo,
                livro.preco,
                livro.descricao,
                livro.id
            ],
            function (erro) {
                if (erro) {
                    return reject('Não foi possível atualizar o livro!');
                }

                resolve();
            });
        });

Veja que depois de definirmos as variáveis, colocamos virgula e definimos a função que será executada, chamada de callback :)

E veja que não precisamos escrever result dado que não utilizamos para nada, só estamos interessados se aconteceu ou não o erro!

Abraços e Bons Estudos!