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

Retornando 500 no método PUT da edição da imagem.

Meu console retorna Internal server error no método put. Tentei várias soluções mas sem sucesso...Segue o retorno:

angular.js:12759 PUT http://localhost:3000/v1/fotos/undefined 500 (Internal Server Error) (anonymous) @ angular.js:12759 q @ angular.js:12492 (anonymous) @ angular.js:12244 (anonymous) @ angular.js:17051 $digest @ angular.js:18233 $apply @ angular.js:18531 (anonymous) @ angular.js:27346 dispatch @ jquery-3.2.1.slim.min.js:3 q.handle @ jquery-3.2.1.slim.min.js:3

O meu trecho de código (porque os métodos callback na aula não são mais aceitos), está...

$scope.submeter = function() {
        if ($scope.formulario.$valid) {
          if ($routeParams.fotoId) {      
            $http.put("/v1/fotos/" + $scope.foto._id, $scope.foto).then(successCallback, errorCallback);
            function successCallback() {
              $scope.foto = {};
              $scope.mensagem = 'A imagem ' + $scope.foto.titulo + ' foi ALTERADA com sucesso!';
            }
            function errorCallback(error) {             
              $scope.mensagem = 'Não foi possível alterar a foto ' + $scope.foto.titulo;

            }

          } else {
            $http.post("/v1/fotos", $scope.foto).then(successCallback, errorCallback);
            function successCallback() {              
              $scope.foto = {};
              $scope.mensagem = "Imagem ADICIONADA com sucesso!";
            }
            function errorCallback(erro) {
              $scope.mensagem = ("Ocorreu o erro", error);
              console.log(error);
            }
          }   
        }; //fim primeiro if
    }; //fim bloco

Alguém sabe o que pode ser?

2 respostas

O motivo do erro é que você não está passando o último parâmetro ali na url.. percebe que tá indo undefined? Você precisa dar um debugada para tentar achar o motivo que $scope.foto._id ta retornando undefined.

solução!

Entendi. Na realidade ao inspecionar o console, percebi que estava tudo subordinado a "data"... Desta forma, na função de callback do $routeParams, o $scope.foto tem de receber foto.data, igual abaixo:

 $scope.foto = foto.data;

Isso não está na vídeo-aula. Não sei se foi porque a vídeo-aula pode ser velha ou porque mudaram a API do conteúdo do curso e não adequaram. Enfim. Tem um monte de erros em relação ao código que funciona.