Перейти к содержимому

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Меньше или равно
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 },
},
},
})