Mudar a Camada de Visão
Procedemos as seguintes adições no arquivo controller.js na função EditarCtrl:
function EditarCtrl ($scope, $http) { ... $scope.modificar = function() { $http.put('/modificar/' + $scope._id, $scope.livro).success(function(data) { if (data == 'err'){ alert("Houston, temos um problema"); } else { alert("Livro Modificado..."); window.location = '/'; } }) } }Esta função é chamada pelo botão Modificar do formulário que por sua vez passa o ObjectID e o livro modificado pelo formulário. Por que não passar o "nome"? Porque senão este campo não poderia ser alterado, a menos que optássemos por manter mais uma variável não editável contendo o nome não alterado. Após o livro ser alterado no banco retornamos (com o comando window.location) para a tela principal.
Mudar a Camada de Dados
Agora vamos proceder a modificação do livro no banco. No arquivo de funções, inserimos a seguinte função (abaixo da função procurar):
exports.modificar = function (req, res) { livroModel.update({_id: req.params.id}, {nome: req.body.nome, autor: req.body.autor}).exec(function(err) { if (err) { callback(err); } else { res.send(); } }); }Com base no id passado, procedemos um comando update do banco. Este comando é dividido em duas partes, a primeira corresponde ao dado de localização e a segunda os campos a serem alterados. Se comparássemos com SQL a primeira parte seria o WHERE enquanto que a segunda os campos do SET.
Mudar a Camada do Servidor
No arquivo do servidor adicionamos a nova rota que recebe o parâmetro "id":
app.put('/modificar/:id', routes.modificar);E terminamos com a adição do caminho para a chamada da tela no arquivo de rotas para chamar a função de banco criada:
exports.modificar = function(req, res) { livro.modificar(req, res); };Após o usuário alterar os dados na tela dispara a função modificar para a rota indicada passando a ObjectID e o livro como objeto encapsulado no corpo da requisição (request), exatamente por este motivo o método PUT é o mais indicado para alteração. Com essa concluímos a letra U e na próxima finalizaremos o nosso CRUD com a exclusão dos dados na tabela.
Obrigado e até a próxima
Fernando Anselmo
0 comentários:
Postar um comentário