node.js - 如何将正则表达式与数字一起使用
问题描述
我是编程和构建我的第一个全栈应用程序的新手。在我的应用程序中,我有两个实体,分支机构和帐户。分支名称是字母数字字符串,而帐户只是数字,例如 116003183、16582368。这种情况是,当用户输入分支的前几个字母时,所有匹配的结果都会显示出来。我无法对帐户做同样的事情,因为那是所有数字。我查看了几个可以使用 [0-9] 的网站,但我不知道如何实现该代码。这是我的代码。任何帮助或线索将不胜感激。
router.get('/', async (req, res) => {
let query = Account.find()
if (req.query.name != null && req.query.name != ''){
query= query.regex('name',new RegExp(req.query.name))
}
try{
const accounts = await query.exec()
res.render('accounts/index',{
accounts: accounts,
searchOptions:req.query
})
}
catch(err) {
res.redirect('/')
}
})
解决方案
使用$expr
-运算符,您可以构建一个查询,将类型的帐户名称字段转换为number
字符串,然后对该字段进行正则表达式匹配:
// ...
const query = {};
if (req.query.name != null && req.query.name != ''){
query.$expr = {
"$regexMatch": {
"input": {"$toString": "$name"},
"regex": new RegExp(req.query.name)
}
}
}
const accounts = await Account.find(query);
// ...
推荐阅读
- scheme - Will a procedure be considered as a predicate,
, when the special form cond is missing the key word else?
- c++ - 无法使用 cmake 将项目与库和可执行文件链接
- java - 如何在 java Eclipse 中放入正确的文件路径
- sql - 在全文搜索中计算 ts_stat 计数的唯一条目
- r - R code to get max count of time series data by group
- java - Blocking I/O in Project Reactor pipeline
- python - Kivy Video 在 Mac 上不起作用:加载纹理 test.mp4 时出错
- asciidoc - 如何在 asciidoc 上添加样式表 CDN?
- django - 如何访问多对多字段数据?
- javascript - 为什么加载资源失败?