【发布时间】:2019-03-20 20:32:38
【问题描述】:
我正在做一个 MERN 项目,在用户登录时我发现这个用户是这样的:
User.findOne({username:req.body.username}).exec(function(err,user){ 如果(用户){ 代码行...... });
假设我的用户名是 Imran 保存在 Db 中,并在上述代码中将用户名发送为 .
案例1: req.body.username = 伊姆兰 找到用户 1
案例2: req.body.username = imran 找到用户 0
案例3: req.body.username = imRan 找到用户 0
如果我使用正则表达式来查找这样的用户名...
User.findOne({username: {$regex: username , $options : "i"}})
它会在上述所有情况下找到用户,但如果我输入 imr 而不是 Imran 或 imran 或 imRan 并给出密码,它将再次登录该用户,这是不正确的!所以我很希望。如果有人可以帮助我解决这个问题!那会很棒!
【问题讨论】:
-
您能解释一下您希望对用户名字段做什么吗? AFAIK,mongodb 只会为案例 1 验证您的用户名,这应该是唯一的案例。如果您打算执行自动完成或任何其他操作,那么最好在顶层而不是您的数据库中完成它,以尽量减少您对性能的负担。
标签: node.js regex mongodb express mongodb-query