我的应用的基本功能:客户开始在输入字段中输入电子邮件地址,并接收与他们输入的字符相匹配的自动建议结果。
我已尝试在我的节点应用程序中在Mongoose / Mongo中实现此功能,如下所示:
let customer = await Customer.find({
'email_address': {
$regex: searchQuery
}
})
重要的是要注意我实际上为email_address
设置了一个索引,以提高性能,但我在某处读到使用regex
将无效搜索索引?我阅读了关于此的文档但我更加困惑。无论如何,问题的主要症结如下:
我知道通过执行/^exampleEmailAddress/
之类的操作,它会匹配以查询开头的结果(不是通配符搜索)。这就是我要的。
但是,如果exampleEmailAddress
是我从req.query
获得的变量,我该怎么办呢?我试过了:
let customer = await Customer.find({
'email_address': {
$regex: /^`${searchQuery}`/
}
})
哪个不行。我觉得我在这里缺少一些基本的东西......
答案 0 :(得分:3)
您可以使用课程RegExp
const customer = await Customer.find({
email_address: {
$regex: new RegExp(`^${searchQuery}`),
},
});
答案 1 :(得分:2)
您可以对文档中的特定属性使用Regex
表达式。您可以使用上面提到的i
customer.find({ "email_address": new RegExp(searchQuery, 'i') }, function (err, task) {
if (err)
res.send(err);
res.json(task);
});
请注意。 req
和res
可能是您的请求和响应对象