2015-09-05 2 views
1

Когда я представить пустую форму из моего углового приложения, он посылает следующий JSON:Угловое ПОСТ JSON структура

{foo: {}} 

Это приводит к ошибке 500 (вместо 422) от моего сервера, так как он ожидает, следующая структура:

{foo: {bar: ""}} 

Как я могу убедиться, что ключ «бар» всегда включен в мой JSON, даже если значение пусто?

Вот что мой контроллер выглядит в настоящее время:

$scope.baz = {}; 
$scope.create = function() { 
    var error, success; 
    $scope.errors = {}; 
    success = function() { 
     $scope.baz = {}; 
    };  
    error = function(result) { 
     angular.forEach(result.data.errors, function(errors, field) { 
      $scope.form[field].$setValidity('server', false); 
      $scope.errors[field] = errors.join(', '); 
     });  
    }; 

    Foo.save({ foo: { bar: $scope.baz.bar }}).$promise.then(success, error); 

}; 
+1

ли дать попробовать, сделав 'Foo.save ({Foo: {бар: $ scope.baz.bar || ""}})' –

+0

Это делает трюк. Если вы добавите это в качестве ответа, я соглашусь с ним @PankajParkar – Herm

+0

Вы действительно должны обрабатывать ошибку на стороне сервера приложения. – thgaskell

ответ

1

Я думаю, когда вы передаете неопределенную объект пропеллер в save запросе он получает игнорировал или удалить при отправке запроса на сервер. Вы можете сделать это значение пустой строкой, чтобы удостовериться, что оно присвоено некоторым значением и не должно быть удалено из объекта запроса. Попробуйте изменить код ниже.

Foo.save({ foo: { bar: $scope.baz.bar|| "" }}) 
Смежные вопросы