我正在构建一个网站,使用nodejs、expressjs、mongodb、mongoose、body-parser等。
基本上我创建了一个搜索功能,您可以在其中搜索用户,基本上它可以工作,但问题是,它区分大小写,我想使用不区分大小写的方式搜索用户。
我在堆栈溢出中找到了一个解决方案,并在我的 mongo shell 上尝试了它。这是命令
db.loginusers.find({
$or:
[
{"firstname": {$regex: /^PIa$/i}},
{"lastname": {$regex: /^NAtUrE$/i}}
]
})
这适用于 mongoshell。所以当我尝试将其放入我的 JS 文件时,
app.post("/searchresult", function(req, res){
var thename = req.body.thename;
LoginUser.find({
$or: [
{"firstname": {$regex: /^thename$/i}},
{"lastname": {$regex: /^thename$/i}}
]
}, function(err, searchedUser){
if(err){
console.log(err);
res.redirect("back");
} else {
res.render("searchprofile", {foundUser: searchedUser});
}
});
});
它不起作用,尽管我尝试将正确的大小写放在名称上,但它不起作用..
我的问题是,在我的 JS 文件上使用正则表达式之前我需要做一些事情吗?
谢谢!
最佳答案
因为 thename
是一个变量,所以使用 RegExp
对象构造函数从变量创建一个正则表达式实例,然后您可以在查询中使用该实例:
var rgx = new RegExp("^"+ thename +"$", "i");
LoginUser.find({
"$or": [
{"firstname": rgx },
{"lastname": rgx }
]
}, callback);
关于regex - 使用正则表达式在 mongodb 中搜索查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39614608/