我正在使用以下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。
我不知道如何干净利落地连接所有这些。
答案 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);
}