检查数据库中是否已存在值

时间:2015-11-10 20:35:09

标签: angularjs

当用户将电影添加到其关注列表时,我正在寻找一种方法来检查数据库中是否已存在值(电影的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);
      };

    })

1 个答案:

答案 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()并让后端决定它是否会创建新电影在电影和用户之间创建一个分配。