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

Rotina para alterar

Srs, para completar meu CRUD nesse curso estou tentando criar a rotina para alterar.

Minha duvida está aqui, não consigo enviar os dados que peguei no banco para form de update. A URl aponta para '/produtos/procurar/:id ao invés de produto/update

app.get('/produtos/procurar/:id', function(req, res){    
    let id = req.params.id;    
    var connection = app.infra.connectionFactory();
    var produtosDAO = new app.infra.ProdutosDAO(connection);

    produtosDAO.procurar(id, function(err, produto){
      res.render('produtos/update', {produto:produto});      
    });
    connection.end();    
  });

ProdutoDAO

ProdutosDAO.prototype.procurar = function(id, callback){
  this._connection.query('select * from livros where id = ?', id, callback);
}
5 respostas

Oi Leandro, tudo bem? callback está recebendo os dados do produto? Consegue dar um console.log(produto) pra ver se ele tá achando os dados ou mesmo se a variável err está vindo com algum erro?

Oi Wanderson.

O produto chega sim, o problema está no meu DAO de alteração, já tentei de várias formas mais sem sucesso.

ProdutoDAO.prototype.altera = function(produto, callback){
  this._connection.query("update livros set " + 'titulo= '+ produto.titulo + ', '+ 'descricao= '+produto.descricao + ', '+ 'preco= '+ produto.preco+ ' ' + 'where id = '+ produto.id, callback);    
}

Erro:

 errno: 1064,
  sqlMessage: 'You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near \'7, preco= 72 where id = 1\' at line 1',
  sqlState: '42000',
  index: 0,
  sql: 'update livros set titulo= produto.titulo, descricao= PHp 7, preco= 72 where id = 1' }
solução!

Tente fazer desta forma:

ProdutoDAO.prototype.altera = function(produto, callback){
  this._connection.query("update livros set titulo= '" + produto.titulo + "', descricao= '" +produto.descricao + "', preco= '" + produto.preco + "' where id = " + produto.id, callback);    
  }

Oi Daniel, bom dia.

Deu certo. Eu tive apenas que tirar as aspas simples do preço e id. Obrigado pela ajuda.

ProdutoDAO.prototype.altera = function(produto, callback){
  this._connection.query("update livros set titulo = '" + produto.titulo + "', descricao= '" +produto.descricao + "', preco= " +produto.preco +" where id = " +produto.id, callback);    
}

Boa Daniel! Desculpa a demora Leandro, felizmente o Daniel já resolveu. :)

Bons estudos!