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

Editar, deletar e Chaves estrangeiras

Como faço para editar e deletar um produto, e como posso fazer para trabalhar com chaves estrangeiras no nodejs?

ex: table_livros e table_autores. A table_livros recebe uma chave estrangeira de table_autores.

Como seria essa situação no nodejs?

Obrigado!

3 respostas

Olá Flávio!

Não sou um expert em node.js, mas acho que posso te ajudar neste caso!

Para editar um produto, você precisa criar um formulário de edição (semelhante ao de criar um novo produto) que mostre na tela os dados do produto que você quer editar, como fazemos la listagem dos produtos.

Então você deve criar um método edita() do mesmo modo que criou o método salva(), passando o produto já alterado como parâmetro. A grande diferença está na query, que será um UPDATE ao invés de INSERT.

Aí então crie uma rota para receber este formulário (do mesmo modo que ao criar um novo produto) e utilize o novo método edita() ao invés do salva().

O código do ProdutosDAO vai a seguir:

ProdutosDAO.prototype.edita = function(livro, callback) {
    this._connection.query('UPDATE livros SET ? WHERE id = ?', [livro, livro.id], callback);
}

Para deletar, você precisa enviar somente o id do produto via formulário, criar e utilizar um método no ProdutoDAO para deletar() seu produto, a seguir:

ProdutosDAO.prototype.deletar = function(id, callback) {
    this._connection.query('DELETE FROM livros WHERE id = ?', [id], callback);
}

Se conseguir se virar no inglês, aqui vai uma boa referência externa que pode te ajudar: em todas as funções de um CRUD (Criar, Listar, Editar, Deletar): http://teknosains.com/i/simple-crud-nodejs-mysql

Espero que isso te ajude a resolver seu problema! Neste caso, lembre-se de marcar a dúvida como solucionada para que outros usuários com a mesma dúvida sejam ajudados também. =)

Mas caso contrário, não hesite em entrar em contato novamente que posso tentar dar uma resposta mais detalhada!

Bons estudos!

Olá Marco, obrigado pela resposta, ajudou sim. agora estou na dúvida em como trabalhar com um modelo relacional

tabela_autor                 tabela_livro
    idautor                    idlivro
    nome                        nome
                                idautor (FK)

Posso fazer isso normalmente como faço no php ou no java?

solução!

Tenho a impressão de que sim. Fazer um teste rápido com uma query que relacione as duas tabelas não seria custoso.

Um exemplo rápido é SELECT autor.* FROM tabela_livro AS livro JOIN tabela_autor AS autor ON autor.idautor = livro.idautor WHERE livro.idlivro = 1, trocando o 1 or um id que você saiba que exista na tabela_livro. Garanta também que a tabela_autor tenha um autor relacionado definindo o atributo idautor (FK) como NOT NULL ;)