太妃糖数据库中的动态 "and" 查询
dynamic "and" query in taffy DB
我正在尝试过滤我的太妃糖数据库,我有一些允许用户选择过滤器的下拉菜单:
<select name="selectOPtions" id="typeSelect" >
<option value="all">All Types</option>
</select>
<select name="selectOPtions" id="countrySelect" >
<option value="all" >All Countries</option>
</select>
<select name="selectOPtions" id="provinceSelect">
<option value="all" >All Provinces</option>
</select>
<select name="selectOPtions" id="citiesSelect" >
<option value="all">All Cities</option>
</select>
假设 ajax 响应包含我们的数据库,因此我们有:
商店=TAFFY(响应);
我已经根据这个逻辑填充了下拉菜单:
allCountries=Stores().distinct("country");
var $countries=$('#countrySelect');
$.each(allCountries, function(id, cc){
if(cc!=null && cc!=''){
$countries.append('<option value="'+cc+'"> '+paese.toUpperCase()+'</option>');
}
});
然后我将用户可能选择的所有值收集在一个数组中作为过滤查询:
$('select[name=selectOPtions]').on('change', function(){
myFilter=[];
chosenType=$('#typeSelect').children("option:selected").val();
chosenCountry=$('#countrySelect').children("option:selected").val();
chosenProvince=$('#provinceSelect').children("option:selected").val();
chosenCity=$('#citiesSelect').children("option:selected").val();
if(chosenType!=null && chosenType !="" && chosenType!="all"){
myFilter.push({type:chosenType});
}
if(chosenCountry!=null && chosenCountry!="" && chosenCountry!="all"){
myFilter.push({country:chosenCountry});
}
if(chosenProvince!=null && chosenProvince!="" && chosenProvince!="all"){
myFilter.push({province:chosenProvince});
}
if(chosenCity!=null && chosenCity!="" && chosenCity!="all"){
myFilter.push({city:chosenCity});
}
list=Stores(myFilter).get();
显示结果:
var $storesShow=$('#storesSelect');
$storesShow.empty();
$.each(list, function(id, rec){
if(rec !=''){
$storesShow.append('<option value="'+rec.store_code+'"> '+rec.type+"-"+rec.country+ "-"+rec.city+'</option>');
}
});
});
当我选择一些过滤器时,它没有 return 正确的结果。我可以举个例子:
如果我想要太妃糖 returns country="Italy" AND type="DEMO" 的所有记录,它是 returning "OR" 结果。
谢谢!
好的,我找到了结果。问题是太妃糖中的数组表示或。我分享部分结果有主要概念:
$('select[name=selectOPtions]').on('change', function(){
var object = {};
var operator = "===";
var chosenType=$('#typeSelect').children("option:selected").val();
var chosenCountry=$('#countrySelect').children("option:selected").val();
var chosenProvince=$('#provinceSelect').children("option:selected").val();
var chosenCity=$('#citiesSelect').children("option:selected").val();
if(chosenType!=null && chosenType !="" && chosenType!="all"){
var column ="type";
object[column]={};
object[column][operator]=chosenType;
console.log(object);
list=Stores(object).get();
}
// ...
// 其他下拉菜单也一样
console.log(list);
var $storesShow=$('#storesSelect');
$storesShow.empty();
$.each(list, function(id, rec){
if(rec !=''){
$storesShow.append('<option value="'+rec.store_code+'"> '+rec.type+"-"+rec.country+ "-"+rec.city+" "+rec.addressLine1+'</option>');
}
});
});
我正在尝试过滤我的太妃糖数据库,我有一些允许用户选择过滤器的下拉菜单:
<select name="selectOPtions" id="typeSelect" >
<option value="all">All Types</option>
</select>
<select name="selectOPtions" id="countrySelect" >
<option value="all" >All Countries</option>
</select>
<select name="selectOPtions" id="provinceSelect">
<option value="all" >All Provinces</option>
</select>
<select name="selectOPtions" id="citiesSelect" >
<option value="all">All Cities</option>
</select>
假设 ajax 响应包含我们的数据库,因此我们有:
商店=TAFFY(响应);
我已经根据这个逻辑填充了下拉菜单:
allCountries=Stores().distinct("country");
var $countries=$('#countrySelect');
$.each(allCountries, function(id, cc){
if(cc!=null && cc!=''){
$countries.append('<option value="'+cc+'"> '+paese.toUpperCase()+'</option>');
}
});
然后我将用户可能选择的所有值收集在一个数组中作为过滤查询:
$('select[name=selectOPtions]').on('change', function(){
myFilter=[];
chosenType=$('#typeSelect').children("option:selected").val();
chosenCountry=$('#countrySelect').children("option:selected").val();
chosenProvince=$('#provinceSelect').children("option:selected").val();
chosenCity=$('#citiesSelect').children("option:selected").val();
if(chosenType!=null && chosenType !="" && chosenType!="all"){
myFilter.push({type:chosenType});
}
if(chosenCountry!=null && chosenCountry!="" && chosenCountry!="all"){
myFilter.push({country:chosenCountry});
}
if(chosenProvince!=null && chosenProvince!="" && chosenProvince!="all"){
myFilter.push({province:chosenProvince});
}
if(chosenCity!=null && chosenCity!="" && chosenCity!="all"){
myFilter.push({city:chosenCity});
}
list=Stores(myFilter).get();
显示结果:
var $storesShow=$('#storesSelect');
$storesShow.empty();
$.each(list, function(id, rec){
if(rec !=''){
$storesShow.append('<option value="'+rec.store_code+'"> '+rec.type+"-"+rec.country+ "-"+rec.city+'</option>');
}
});
});
当我选择一些过滤器时,它没有 return 正确的结果。我可以举个例子: 如果我想要太妃糖 returns country="Italy" AND type="DEMO" 的所有记录,它是 returning "OR" 结果。 谢谢!
好的,我找到了结果。问题是太妃糖中的数组表示或。我分享部分结果有主要概念:
$('select[name=selectOPtions]').on('change', function(){
var object = {};
var operator = "===";
var chosenType=$('#typeSelect').children("option:selected").val();
var chosenCountry=$('#countrySelect').children("option:selected").val();
var chosenProvince=$('#provinceSelect').children("option:selected").val();
var chosenCity=$('#citiesSelect').children("option:selected").val();
if(chosenType!=null && chosenType !="" && chosenType!="all"){
var column ="type";
object[column]={};
object[column][operator]=chosenType;
console.log(object);
list=Stores(object).get();
}
// ... // 其他下拉菜单也一样
console.log(list);
var $storesShow=$('#storesSelect');
$storesShow.empty();
$.each(list, function(id, rec){
if(rec !=''){
$storesShow.append('<option value="'+rec.store_code+'"> '+rec.type+"-"+rec.country+ "-"+rec.city+" "+rec.addressLine1+'</option>');
}
});
});