【发布时间】:2017-02-03 13:36:52
【问题描述】:
我正在使用 mongodb 和 node.js。在我的数据库中,我有 6 个字段是
- 出价
- 颜色(数组)
- 大小(数组)
- cat_id
- sub_cat_id
一切正常。现在我想在我的代码中添加过滤器。在过滤器区域中,我添加了所有字段。用户选择多种颜色和尺寸,因此它将以数组格式出现,但大多数时候用户不会选择颜色选项或尺寸选项,此时字段值为空白,因此我的过滤器不会从数据库中获取任何结果。所以如果在搜索过程中值为空,我想删除颜色或大小字段。我已经尝试过下面的代码,但它不起作用。我是如何做到的。
var catId = new Array();
var sort = saveFilterSort.sort;
var filter = req.body;
if(req.body.catId){
catId.push("category_id:"+req.body.catId);
}
if(req.body.subcatid){
catId.push("sub_category_id:"+req.body.subcatid);
}
if(req.body.minprice){
catId.push("price:{$gt:"+req.body.minprice+"}");
}
if(req.body.maxprice){
catId.push("price:{$lt:"+req.body.maxprice+"}");
}
if(req.body.color){
catId.push("color:{$in:"+req.body.color+"}");
}
if(req.body.size){
catId.push("attribute:{$in:"+req.body.size+"}");
}
var finalCat = catId.join(',');
console.log(finalCat);
console.log(catId);
if((filter) && (sort)){
Product.find(
{
brand_id:bid, finalCat
},
function(error,fetchallFeatProds)
{
console.log('#######################');
console.log(fetchallFeatProds);
console.log('#######################');
callback(error,fetchallFeatProds);
}).sort( {_id:-1,price:-1} );
此代码不起作用。请帮我。
【问题讨论】:
-
什么是错误?
-
finalCat只是一个字符串,它肯定不能用作查询,因为它需要一个对象 -
@WasiqMuhammad 像字符串一样对待。见下文
-
@chridam 我同意你的看法,先生,请查看以下内容', '属性:{$in:57bd9b0feb288f99247b23c7,57bd9baaeb288f28067b23c7}' ]
标签: arrays node.js mongodb search filter