【发布时间】:2016-08-28 19:50:57
【问题描述】:
所以我想使用 mongoose .find() 函数在我的数据库中搜索项目。
在我的路由器中,我有这段代码可以从 url 中获取某些项目。
例如;
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)})
}})
这很好用,但是当 url 中没有查询值时(如上所示),查询值将设置为 ''。然后它会整理我数据库中的所有项目,因为没有例子 name = '';
我到处搜索,但没有找到任何帮助,所以如果有人能给我小费,我将不胜感激!
【问题讨论】:
-
如果问值是空还是null?这个答案解释了它:stackoverflow.com/a/16532000/3558900
-
假设我有 5 个不同的查询,每个查询都没有价值。我看不到使用 { $ne: null } 的方法,我不使用很多 if 和 else 语句。而 2^5 是 32 种不同的组合,它会产生很多 if 和 else 语句。我可以以某种方式将 { $ne: null } 转换为字符串对象吗?
-
然后以编程方式构建您的查询。如果你不想要很多 if else,你可以用一个数组做一个 for 并询问该值是否为空。 stackoverflow.com/a/15673923/3558900
标签: node.js mongodb express mongoose