如何将Regex与数字结合使用



我刚开始编程和构建我的第一个全栈应用程序。在我的申请中,我有两个实体,分支机构和账户。分支机构名称是字母数字字符串,而账户只是数字,例如11600318316582368。场景是,当用户键入Branch的前几个字母时,所有匹配的结果都会显示出来。我不能对账户做同样的事情,因为这都是数字。我查找了一些可以使用[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);
// ...

最新更新