javascript - 使用变量在 node.js 应用程序中执行正则表达式 Mongo 搜索

标签 javascript node.js regex mongodb mongoose

我的应用程序的基本功能:客户开始在输入字段中输入电子邮件地址,并收到与他们输入的字符相匹配的自动建议结果。

我已经尝试在我的 Node 应用程序中的 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}`/
  }
})

这是行不通的。我觉得我在这里缺少一些基本的东西......

最佳答案

您可以使用类 RegExp

const customer = await Customer.find({
  email_address: {
    $regex: new RegExp(`^${searchQuery}`),
  },
});

关于javascript - 使用变量在 node.js 应用程序中执行正则表达式 Mongo 搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49253382/

相关文章:

c# - 用于验证 GSTIN 编号的正则表达式

javascript - Node 回调什么时候需要setImmediate

javascript - 使用 JavaScript 获取网站的 HTML、CSS 和 JavaScript

javascript - 如何在给定代码的 JavaScript 对象中有条件地添加键

php - 当前浏览器版本检测

java - 用零替换未知数量的空格 [Regex/Java]

node.js - 在指定文件夹中以编程方式运行 npm install

javascript - 除非已经插入文档,否则将文档插入集合中?

javascript - MongoDB/Node.JS : Inserting documents in a loop - variables not updating?

regex - 检查字符串是否与 Bash 脚本中的正则表达式匹配