Базовые функции моего приложения: клиенты начинают вводить адрес электронной почты в поле ввода и получать автоматически предлагаемые результаты, соответствующие введенным ими символам.
Я пробовал реализовать это в Mongoose / Mongo в моем приложении узла следующим образом:
let customer = await Customer.find({
'email_address': {
$regex: searchQuery
}
})
Важно отметить, что у меня на самом деле настроен индекс для email_address
, чтобы повысить производительность, но я где-то читал, что использование regex
приведет к аннулированию поиска по индексу? Я читал документацию по этому поводу, но я просто запутался больше. В любом случае основная суть вопроса ниже:
Я знаю, что, выполнив что-то вроде /^exampleEmailAddress/
, он будет соответствовать результатам, которые начинаются с запроса (не поиск по шаблону). Это то, что я хочу.
Но как мне это сделать, если exampleEmailAddress
- это переменная, полученная мной из req.query
? Я пробовал:
let customer = await Customer.find({
'email_address': {
$regex: /^`${searchQuery}`/
}
})
Который не работает. Я чувствую, что мне здесь не хватает чего-то элементарного ...
2 ответа
Вы можете использовать класс RegExp
const customer = await Customer.find({
email_address: {
$regex: new RegExp(`^${searchQuery}`),
},
});
Вы можете использовать выражение Regex
для этого конкретного свойства в своих документах. И вы можете искать нечувствительность к регистру, используя i
, как упоминалось
customer.find({ "email_address": new RegExp(searchQuery, 'i') }, function (err, task) {
if (err)
res.send(err);
res.json(task);
});
Заметка. req
и res
могут быть вашими объектами запроса и ответа
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.