quinta-feira, 26 de dezembro de 2013

REST - Aula Prática - Alterar os Dados (Parte 2)

Nesta segunda parte, iremos realizar a alteração dos dados a partir do formulário com o livro selecionado.

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