9. Фильтрация и поиск
Prisma предоставляет мощный и типобезопасный API для фильтрации данных через оператор where. Вы можете комбинировать условия, использовать логические операторы и применять разнообразные методы сравнения.
Базовые операторы сравнения
Заголовок раздела «Базовые операторы сравнения»const users = await prisma.user.findMany({ where: { age: { gt: 18 }, // больше name: { contains: 'ван' }, // содержит email: { endsWith: '.ru' }, // заканчивается на role: { not: 'BANNED' }, // не равно }})Строковые операторы
Заголовок раздела «Строковые операторы»| Оператор | Описание | Пример |
|---|---|---|
equals | Точное совпадение | { name: { equals: 'Иван' } } |
contains | Содержит подстроку | { bio: { contains: 'developer' } } |
startsWith | Начинается с | { email: { startsWith: 'admin' } } |
endsWith | Заканчивается на | { email: { endsWith: '.com' } } |
Числовые операторы
Заголовок раздела «Числовые операторы»| Оператор | Описание |
|---|---|
gt | Больше (greater than) |
gte | Больше или равно |
lt | Меньше (less than) |
lte | Меньше или равно |
Логические операторы AND/OR/NOT
Заголовок раздела «Логические операторы AND/OR/NOT»const users = await prisma.user.findMany({ where: { AND: [ { age: { gte: 18 } }, { isActive: true }, ], OR: [ { role: 'ADMIN' }, { role: 'MODERATOR' }, ], NOT: { isBanned: true }, },})Фильтрация по связанным моделям
Заголовок раздела «Фильтрация по связанным моделям»// Найти пользователей у которых есть опубликованные постыconst usersWithPosts = await prisma.user.findMany({ where: { posts: { some: { published: true }, }, },})