18. PostgreSQL
PostgreSQL — наиболее полноценно поддерживаемая база данных в Prisma. Многие специфичные функции PostgreSQL доступны напрямую через Prisma Client или через расширения схемы.
Перечисления (Enum)
Заголовок раздела «Перечисления (Enum)»enum UserRole { USER ADMIN MODERATOR}
model User { id Int @id role UserRole @default(USER)}JSON поля
Заголовок раздела «JSON поля»PostgreSQL поддерживает тип JSONB для хранения структурированных данных:
model Product { id Int @id metadata Json settings Json @default("{}")}Запросы к JSON-полям:
// Создать с JSONawait prisma.product.create({ data: { metadata: { color: 'red', size: 'XL', tags: ['sale', 'new'] }, },})
// Фильтрация по JSON (PostgreSQL)const products = await prisma.product.findMany({ where: { metadata: { path: ['color'], equals: 'red' }, },})Массивы
Заголовок раздела «Массивы»model Post { id Int @id tags String[]}// Найти посты с тегом 'prisma'const posts = await prisma.post.findMany({ where: { tags: { has: 'prisma' } },})
// Найти посты с любым из теговconst posts2 = await prisma.post.findMany({ where: { tags: { hasSome: ['prisma', 'typescript'] } },})UUID в качестве ID
Заголовок раздела «UUID в качестве ID»model User { id String @id @default(uuid())}Полнотекстовый поиск
Заголовок раздела «Полнотекстовый поиск»const results = await prisma.post.findMany({ where: { title: { search: 'prisma & typescript' }, },})