跳到主要内容
CNode

mongoose 正则匹配

社区
LLL101SS发布于 12 年前最后回复 10 年前
16115570

var regex = new RegExp(sSearch, 'i'); User.find({name: regex}).exec(function (err, items){ } name 的type是String, 这样是可以的;如果换成age,age的type是Number,就报类型转换错误 CastError: Cast to number failed for value "/(?:)/i" at path "age", 请问一下,该是怎么样的写法?

查看回复

回复 (16)

K
keniusuannai#1610 年前

挖坟~ 后来怎么解决的

A
AdoHe#1512 年前

@alsotang @heixiaoshan 个人觉得tang的建议可取,用正则去匹配Number性能上应该是没有Number(aSearch)去查好。。。。

A
alsotang#1412 年前
引用 LL101SS@heixiaoshan 前台有个搜索框,sSearch = req.body.sSearch 得到sSearch。我可能在搜索框里写name,或者age

@heixiaoshan

for(var i = 0; i < Math.max(a, b); i++) {
}

这样呢?

其实我也不觉得你原来的写法效率会低,我觉得不会有区别的

H
heixiaoshan#1312 年前
引用 LL101SS@heixiaoshan 前台有个搜索框,sSearch = req.body.sSearch 得到sSearch。我可能在搜索框里写name,或者age

@alsotang 我在做东西的过程中遇到这样的问题。例如: if(err){ xxx } else{ if(a<b){for(i=0;i<a;i++){ }} if(a>b){for(i=0;i<b;i++){ }} } 发现效率慢了很多

A
alsotang#1212 年前
引用 LL101SS@heixiaoshan 前台有个搜索框,sSearch = req.body.sSearch 得到sSearch。我可能在搜索框里写name,或者age

@heixiaoshan 我并不认为多个 if 会影响判断速度啊。。。尽管用 if 吧,随便一个异步操作都干掉那点性能差距了。

H
heixiaoshan#1112 年前
引用 LL101SS@heixiaoshan 前台有个搜索框,sSearch = req.body.sSearch 得到sSearch。我可能在搜索框里写name,或者age

@alsotang 话说我有一个疑问,例如 多个if()判断会严重影响速度,有没有好的办法可以替代多个if判断的呢,并行???

A
alsotang#1012 年前
引用 LL101SS@heixiaoshan 前台有个搜索框,sSearch = req.body.sSearch 得到sSearch。我可能在搜索框里写name,或者age

@heixiaoshan 不会啊。。。。基本比提升难度。况且把用正则去匹配 Number 也很蛋疼啊。

F
frosh#812 年前

可以这么写 var uname = "frank"; Users.find({name:eval('/'+uname+'/')})

A
alsotang#712 年前
引用 LL101SS@heixiaoshan 前台有个搜索框,sSearch = req.body.sSearch 得到sSearch。我可能在搜索框里写name,或者age

并行的查吧, name 用 regex 去匹配, age 用 Number(sSearch) 去查,然后聚合一下。

L
LL101SS#612 年前

@heixiaoshan i 是忽略大小写啊

L
LL101SS#412 年前

@kenticny 搜索框里的东西是任意输入的,$or: [{name: regex},{age:regex}]

L
LL101SS#312 年前

@heixiaoshan 前台有个搜索框,sSearch = req.body.sSearch 得到sSearch。我可能在搜索框里写name,或者age

K
kenticny#212 年前

Number为什么要用正则匹配啊-.-

H
heixiaoshan#112 年前

你这个正则里面是什么东西来的啊。代码补全啊,要是数字也是[0-9]匹配

参与回复

登录后即可参与回复。登录