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

16. Сиды (Seed Data)

Сидирование (seeding) — это процесс наполнения базы данных начальными данными. Prisma поддерживает официальный механизм сидирования через файл prisma/seed.ts.

Добавьте скрипт в package.json:

{
"prisma": {
"seed": "ts-node prisma/seed.ts"
}
}

Установите зависимости:

Окно терминала
npm install -D ts-node
npm install @faker-js/faker # для генерации фейковых данных
prisma/seed.ts
import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()
async function main() {
// Создать роли
await prisma.user.createMany({
data: [
{ email: '[email protected]', name: 'Администратор', role: 'ADMIN' },
{ email: '[email protected]', name: 'Тестовый пользователь', role: 'USER' },
],
skipDuplicates: true,
})
}
main()
.catch(console.error)
.finally(() => prisma.$disconnect())
Окно терминала
npx prisma db seed
import { faker } from '@faker-js/faker/locale/ru'
const users = Array.from({ length: 50 }, () => ({
email: faker.internet.email(),
name: faker.person.fullName(),
bio: faker.lorem.sentence(),
}))
await prisma.user.createMany({ data: users, skipDuplicates: true })
// Создать только если таблица пустая
const count = await prisma.user.count()
if (count === 0) {
await seedUsers()
}