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

erro 500 no put

Ao tentar editar o console acusa erro 500

//o meu código
angular.module('alurapic').controller('FotoController', function($scope, $http, $routeParams) {
    $scope.foto = {};
    $scope.mensagem = '';

   if($routeParams.fotoId) {
       $http.get('v1/fotos/' + $routeParams.fotoId)
       .success(function (foto) {
           $scope.foto = foto;
       })
       .error(function (erro) {
           console.log(erro);
           $scope.mensagem = 'Não foi possível obter a foto';
       });
   }

    $scope.submeter = function () {
        if ($scope.formulario.$valid) {
            if($scope.foto._id) {
                $http.put('v1/fotos/' + $scope.foto_id, $scope.foto)
                .success(function () {
                    $scope.mensagem = 'A foto ' + $scope.foto.titulo + ' foi alterada com sucesso!';
                })
                .error(function(erro) {
                    console.log(erro);
                    $scope.mensagem = 'Não foi possível alterar a foto ' + $scope.foto.titulo;
                })
            } else {
                $http.post('v1/fotos', $scope.foto)
                .success(function() {
                    $scope.foto = {};
                    $scope.mensagem = 'Foto cadastrada com sucesso!';
                })
                .error(function(erro) {
                    $scope.mensagem = 'Erro no cadastro da foto!';
                });
            }

        }
    };
});
// código da resolução
angular.module('alurapic')
    .controller('FotoController', function($scope, $http, $routeParams) {

        $scope.foto = {};
        $scope.mensagem = '';

        if($routeParams.fotoId) {
            $http.get('/v1/fotos/' + $routeParams.fotoId)
            .success(function(foto) {
                $scope.foto = foto;
            })
            .error(function(erro) {
                console.log(erro);
                $scope.mensagem = 'Não foi possível obter a foto'
            });
        }

        $scope.submeter = function() {

            if ($scope.formulario.$valid) {

                if($routeParams.fotoId) {

                    $http.put('/v1/fotos/' + $scope.foto._id, $scope.foto)
                    .success(function() {
                        $scope.mensagem = 'Foto alterada com sucesso';

                    })
                    .error(function(erro) {
                        console.log(erro);
                        $scope.mensagem = 'Não foi possível alterar';
                    });

                } else {                
                    $http.post('/v1/fotos', $scope.foto)
                    .success(function() {
                        $scope.foto = {};
                        $scope.mensagem = 'Foto cadastrada com sucesso';
                    })
                    .error(function(erro) {
                        console.log(erro);
                        $scope.mensagem = 'Não foi possível cadastrar a foto';
                    })
                }
            }
        };

    });

Além de não entender a origem do erro, também não entendi porquê os códigos são diferentes. No if que faço o put, o meu código está if($scope.foto._id) (esse código é exatamente igual ao vídeo), porém o código da resolução está if($routeParams.fotoId). Imagino que apenas são formas diferentes de código, com resultados iguais. Contudo, acho importante manter uma congruência entre descrição e vídeo. Por fim, se essa diferença não é o problema, qual é o meu erro?

3 respostas

Oii Geovane,

vc tentou com if($routeParams.fotoId) e if($scope.foto._id) e os dois dão erro 500?

Tente investigar pelo console se vc está enviando um objeto ou ele já transformado em string.

Pois se vc enviar um objeto (e nao uma string) pode dar erro 500...

Oii Geovane, conseguiu descobrir o que era?

solução!

Não, mas eu baixei o projeto do capítulo.