2016-01-08 3 views
0

У меня есть функция, которая создает фильм,Возвращает идентификатор созданной записи

createMovie.create({ 
    release_date: releaseNL.release_date, 
    imdb_rating: $scope.movieImdbRating.imdbRating, 
    title:   $scope.movieListID.original_title, 
    image:   $scope.movieListID.poster_path, 
    movie_id:  $scope.movieListID.id, 
    backdrop:  $scope.movieListID.backdrop_path 
}). 

Это вызывает службу createMovie,

app.factory('createMovie', ['$http', function($http){ 
    return{ 
    create: function(movie){ 
     return $http.post('/movies.json', movie); 
    } 
    }; 
}]); 

Можно ли вернуть идентификатор этого создана запись ?

+1

Да, обрабатывать его при решении '$ http' обещание. Очевидно, вам понадобится сервер для возврата идентификатора успешно созданного фильма в ответ сервера. – ryanyuyu

+0

Можете сделать это: 'createMovie.create (...). Then (function (response) {var id = response.id});' – Ric

+0

Не будет ли 'response.data.id'? – maurycy

ответ

0

ИМХО правильный поток должен быть

  1. Опубликовать данные бакэнду, чтобы сохранить его
  2. Backend проверяет и сохраняет

    2а. Успех сохранить

    1. возврата 200 с сохраненным элементом JSON
    2. успеха ручка

    2b. Не удалось сохранить

    1. возвращенной ошибки 400
    2. обработает ошибку

createMovie.then(successCallback, errorCallback) 

function successCallback (response) { 
    $scope.movies.push(response.data) //example - add saved movie to list of movies 
} 

function errorCallback (response) { 
    alert(response.data.errorMessage) 
    //something went terribly wrong, let the user know 
} 

Таким образом, когда вы вернетесь HTTP код ошибки вы не должны обрабатывать ошибки в вызов успеха.

Обратите внимание, что response в этом примере содержит заголовки ответа и actuall ответ, что сервер вернул бы в response.data

Смежные вопросы