5
我想用查询字符串搜索我的用户存储库。Expressjs:搜索查询api
这将返回所有用户都具有相似的用户名“kyogron”以及类似的电子邮件“kyogron @ gmail的”
GET localhost:3000/users?username=kyogron&[email protected]
这将返回所有用户:
GET localhost:3000/users
我已经成功地处理路由参数,但我坚持在优化它:
app.get('/users', function(req, res) {
// creates a mongoosejs query object
var query = User.find({});
// to understand how expressjs handles queries:
// ?username=kyogron&[email protected]
// { username: "kyogron", email: "[email protected]" }
//console.log(req.query);
// this was one idea of optimizing the search query parameters
// this doesn't work don't know why I always get an array of ALL users
// even the key and value is right
Object.keys(req.query).forEach(function(key) {
query.select(key, req.query[key]);
});
// this was the way I was first handling the parameters, this works !!
//if (req.query.username) query.where('username', req.query.username);
//if (req.query.email) query.where('email', req.query.email);
// the rest of the query
query.select('username', 'email');
query.exec(function(err, users) {
if (err) throw err;
res.json(users);
});
});
这些是p roblems我与之战斗:
- 为什么不迭代req.query对象工作?
- 我怎么说猫鼬使用通配符(如:京*)
将是很好,如果有人可以帮助我:)
问候
编辑:
第二个问题可以用$解决:其中:
if (req.query.username) {
query.$where(function() {
return this.username === req.query.username; // here we need a regex check
});
}
Thos不起作用...有人可以给我一个提示吗?
EDIT2:
没有管理与$什么地方......但我现在发现
query.where('username').regex();
我只是要寻找一个搜索正则表达式,看起来类似的话
编辑3:
我发现此线程:How to query MongoDB with "like"?我的mongoosejs组问我怎么能做到这一点与猫鼬
EDIT4:
if (req.query.username) {
query.where('username').regex(new RegExp("\/"+req.query.username+"\/"));
}
我几乎得到了它。只要有解决这个愚蠢的正则表达式...