#node.js #mongodb #express #nestjs #typeorm
#node.js #mongodb #выразить #nestjs #typeorm
Вопрос:
[TypeORM с типом MongoDB]. Здравствуйте, у меня есть база данных с пользователями, где у каждого пользователя есть адрес электронной почты, теперь я хочу найти всех пользователей, для которых электронная почта начинается, например, с «test», а возвращаемое значение должно быть User[{email: ‘test1’}, {email: ‘test2’}, …] но я невозможность извлечь эти объекты здесь, как я выполняю свой запрос:
const users = await this.usersRepository.find({
where: `"email" LIKE 'test%'`,
});
Но этот код возвращает всю коллекцию пользователей. Я также пробую это с:
Я также пробую это с:
const users = await this.usersRepository.find({
where: {
email: Like('test')
}
});
Этот возвращает пустой массив []
Даже если я попытаюсь с точным совпадением, например, как (‘test21@abv.bg ‘), по-прежнему возвращает пустой массив
Как я могу добиться, чтобы все пользователи, для которых электронное письмо начинается с «test», заранее благодарны!
Ответ №1:
Для MongoDB используйте регулярное выражение
const users = await this.usersRepository.find({
where: {
email: new RegExp(`^${userEmail}`);
}
});
Комментарии:
1. возвращает пустой массив
2. @AndonMitev это кажется странным. Попробуйте запустить необработанный SQL SELECT * ИЗ «пользователи», ГДЕ «электронная почта» ПОХОЖА НА «test%», чтобы дважды проверить, нет ли проблем с вашими данными
3. Я бы попробовал указать ваши условия непосредственно в качестве аргумента метода find, например, find({ email: Like(‘test%’) }); но я полагаю, это не будет иметь никакого значения. Ссылка: github.com/typeorm/typeorm/blob/master/docs /…
4. Да, нет никакой разницы, я использую MongoDB с TypeORM
5. @AndonMitev это все изменило. В вашем случае вам нужно использовать регулярное выражение { email: /^test/ }