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”, 请问一下,该是怎么样的写法?
你这个正则里面是什么东西来的啊。代码补全啊,要是数字也是[0-9]匹配
Number为什么要用正则匹配啊-.-
@heixiaoshan 前台有个搜索框,sSearch = req.body.sSearch 得到sSearch。我可能在搜索框里写name,或者age
@kenticny 搜索框里的东西是任意输入的,$or: [{name: regex},{age:regex}]
i参数是什么玩意?http://tool.oschina.net/regex# 在线正则
@heixiaoshan i 是忽略大小写啊
并行的查吧, name 用 regex 去匹配, age 用 Number(sSearch) 去查,然后聚合一下。
可以这么写 var uname = “frank”; Users.find({name:eval(’/’+uname+’/’)})
@alsotang 话说这么高大上,难度是不是提升了很多
@heixiaoshan 不会啊。。。。基本比提升难度。况且把用正则去匹配 Number 也很蛋疼啊。
@alsotang 话说我有一个疑问,例如 多个if()判断会严重影响速度,有没有好的办法可以替代多个if判断的呢,并行???
@heixiaoshan 我并不认为多个 if 会影响判断速度啊。。。尽管用 if 吧,随便一个异步操作都干掉那点性能差距了。
@alsotang 我在做东西的过程中遇到这样的问题。例如: if(err){ xxx } else{ if(a<b){for(i=0;i<a;i++){ }} if(a>b){for(i=0;i<b;i++){ }} } 发现效率慢了很多
@alsotang @heixiaoshan 个人觉得tang的建议可取,用正则去匹配Number性能上应该是没有Number(aSearch)去查好。。。。
挖坟~ 后来怎么解决的