当用户将电影添加到其关注列表时,我正在寻找一种方法来检查数据库中是否已存在值(电影的ID)。如果是这样,它应该只存储该电影记录中的当前用户ID,否则创建一个新记录。
这是我目前的movieAdd功能。
movieAdd.add()
.then(function(response){
$scope.movieListID = response;
console.log ('Not empty' + $scope.movieListID)
for (var i = 0; i < $scope.movieListID.releases.countries.length; i++) {
var release = $scope.movieListID.releases.countries[i];
if (release['iso_3166_1'] == 'NL') {
releaseNL = release;
}
}
if(typeof releaseNL === 'undefined'){
// With release date
Notification($scope.movieListID.original_title + ' is toegevoegd, maar heeft nog geen Nederlandse premiere datum.');
createMovie.create({
title: $scope.movieListID.original_title,
release_date: $scope.movieListID.release_date,
image: $scope.movieListID.poster_path,
movie_id: $scope.movieListID.id
}).then(init);
} else {
Notification.success($scope.movieListID.original_title + ' is toegevoegd.');
createMovie.create({
title: $scope.movieListID.original_title,
release_date: releaseNL.release_date,
image: $scope.movieListID.poster_path,
movie_id: $scope.movieListID.id
}).then(init);
};
})
答案 0 :(得分:1)
不执行此操作!首先阅读问题下面的评论。
既然你真的想看看如何实现它,这就是答案。
首先,您将调用后端检查电影是否已存在,然后进行相应的调用:
$http.post('http://your-api-endpoint/movie-available', { title: $scope.movie.original_title }).then(function(response) {
// access response status from the backend
// you could send HTTP status 404 if it doesn't exist yet
// or simply include true/false in the response;
// I assume the HTTP code approach, since it's cleaner
if (response.status === 404) {
// the movie does not exist
movieAdd.add().then(function(response){
// ...
});
} else if (response.status === 200) {
// status 200 is checked to filter server error response, etc.
movieAdd.assign().then(function(response){
// ...
});
}
}
这是该方法背后的基本逻辑。但请注意,您几乎没有提供有关代码中变量的信息。什么是movieAdd
?我认为这是一种提供添加电影功能的服务,但是你有createMovie
服务,所以不知道......
阅读有关ngResource($resource服务)或Restangular的内容。它允许您以安静的方式管理对象,而不管您通常想要什么。
使用这种REST方法,代码将更新为:
$scope.movie = new Movie();
$http.post('http://your-api-endpoint/movie-available', { title: $scope.movie.original_title }).then(function(response) {
if (response.status === 404) {
// the movie does not exist
$scope.movie.$save(function (response) {
// ...
}, function (error) {
// ...
};
} else if (response.status === 200) {
// status 200 is checked to filter server error response, etc.
// call custom function created on ngResource object to assign
// the movie to user
}
}
但正如我在评论中所讨论的那样,你不会这样做。你可以简单地调用$scope.movie.$save()
并让后端决定它是否会创建新电影在电影和用户之间创建一个分配。