使用变量来更改Parse.com查询

时间:2015-05-30 19:33:38

标签: javascript angularjs parse-platform

我正在使用以下Parse.com Javascript查询,需要根据变量切换查询类型。

  function searchParseExercises (queryParam, ActiveFilters, searchParam) {
          var exercise = [];
          var TagSearch = Parse.Object.extend("Exercises");
          var query = new Parse.Query(TagSearch);
      query.containsAll("tags", ActiveFilters);

      query.limit(20);
      query.find({
        success: function(results) {
          var exerciseData = {};
          for (var i = 0; i < results.length; i++) {
            var object = results[i];
            var exerciseData = {
            exerciseName : object.get('exerciseName'),
            exerciseDescription : object.get('exerciseDescription'),
            images : object.get('images'),
          }
         exercise.push(exerciseData);
        }
         $scope.allExercises = exercise;
        },
        error: function(error) {
          $ionicPopup.alert({
            title: "Error: " + error.code + " " + error.message
            });
        }
      });
}

为了澄清要求,我在模板中同时进行了文本搜索和过滤搜索。如果有文本搜索,那么它应该执行:

query.contains("exerciseName", searchParam);

如果有ActiveFilters,那么它应该执行此操作:

query.containsAll("tags", ActiveFilters);

但是如果两个变量都存在(searchParam and ActiveFilters)  然后它应该执行Compound Query

我不知道如何干净利落地连接所有这些。

1 个答案:

答案 0 :(得分:1)

我从你的问题中理解:

if (ActiveFilters && searchParam) {
   Parse.Query.or(ActiveFilters, searchParam).find({
     success: function(results) {
         // results contains a list of players that either have won a lot of games or won only a few games.
     },
     error: function(error) {
         // There was an error.
     }
}
else if (ActiveFilters) {
    query.containsAll("tags", ActiveFilters);
}
else if (searchParam) {
    query.contains("exerciseName", searchParam);   
}