所以我想使用mongoose .find()
函数在我的数据库中搜索项目。
在我的路由器中,我有这段代码从网址获取某些项目。
例如;
mydomainname.com/market?type=1&name=hi&stats=123
...?type=123&name=&...
var type = req.query.type;
var name= req.query.name;
var stats= req.query.stats;
Model.find({type: type, name: name, stats: stats})
.exec(function(err, model){
if(err){
console.log("error")
}else{
res.render('*jade*', {models: JSON.stringify(model)})
}})
这样可以正常工作,但当网址中没有查询值时(如上所示),查询值将设置为''
。然后将我在数据库中的每个项目分类,因为没有exmaple name = ''
;
我有搜索但我没有找到任何帮助,所以如果有任何可以给我小费我会很感激!
答案 0 :(得分:0)
您可以根据请求查询参数的值创建find()
查询对象。以下示例检查name
字段是否具有空字符串值,从查询中删除该属性,然后将最终查询对象用作find()
过滤器:
var q = req.query;
if (q.name === '') {
delete q.name;
}
// carry out further checks
Model.find(q)
.exec(function(err, model){
if(err){
console.log("error");
}else{
res.render('*jade*', {models: JSON.stringify(model)});
}
})
答案 1 :(得分:0)
Try this
var q = req.query;
var data ={};
if (q.name !=null) {
data.name = q.name;
}
else if (q.type !=null){
data.type = q.type;
}
else if (q.stats !=null){
data.stats = q.stats;
}
else{
data={};
}
Model.find(data)
.exec(function(err, model){
if(err){
console.log("error");
}else{
res.render('*jade*', {models: JSON.stringify(model)});
}
})