Как сравнить строку в MongoDB независимо от того, находится ли она в нижнем или верхнем регистре - PullRequest
0 голосов
/ 20 марта 2019

Я работаю над проектом MERN и при входе в систему я нахожу этого пользователя следующим образом:

User.findOne ({имя пользователя: req.body.username}). Exec (функция (эээ, пользователь) { если (пользователь) { Строки кода .... });

Представьте, что мое имя пользователя Imran сохранено в БД и отправьте имя пользователя в приведенном выше коде как.

Вариант 1: req.body.username = Imran Пользователь найден 1

Вариант 2: req.body.username = imran Пользователь найден 0

Вопрос 3: req.body.username = imRan Пользователь найден 0

Если я использую регулярное выражение для поиска имени пользователя, как это ...

User.findOne ({имя пользователя: {$ regex: имя пользователя, $ options: "i"}})

Он найдет пользователя во всех вышеуказанных случаях, но если я введу imr, а не Imran, или imran, или imRan с паролем, то он снова войдет в систему, что не правильно! Так что я надеюсь. Если бы кто-то мог помочь мне с этим вопросом! Это будет здорово!

Ответы [ 3 ]

1 голос
/ 21 марта 2019

Вы хотели бы нормализовать данные при сохранении их путем вызова username.toLowerCase() (или toUpperCase()).Затем, когда вы выполняете запрос, вы вызываете User.findOne({username:req.body.username.toLowerCase()})

0 голосов
/ 21 марта 2019

Спасибо всем за помощь!Я нашел решение, которое работает для меня.User.findOne ({username: new RegExp ("\ b" + username + "\ b", "i")} .... Это будет соответствовать строке имени пользователя, будь то строчная или прописная буква. Надеюсь, это поможетВы:)

0 голосов
/ 21 марта 2019

Я бы порекомендовал хранить имена пользователей в нижнем регистре, по крайней мере, если вы хотите различать имена пользователей в нижнем и верхнем регистре, в этом случае Imran и imran - это два разных пользователя. В любом случае, чтобы соответствовать запросу без учета регистра, вы можете попробовать это:

User.findOne({username: /^imran$/i})

Или

User.findOne({username: {$regex: '^imran$', $options: 'i'}})

В последнем случае вы передаете значение регулярного выражения в виде строки, чтобы вы могли включить переменную между ^ и $, надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...