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