Seeding NestJs with Prisma And Faker

https://media.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9g3udn7z341ltch04diy.png

––– views

2 mins

1 Aug 2021

  • Seeding NestJs with Prisma And Faker
I've been working on this college project and I chose NestJs for the backend. You could just Hasura or other BaaS platforms for small projects. But I wanted to learn NestJs.
Note: Usage with other ORMs might differ but will be almost the same because we'll be using a script.

What you'll need:

  • NestJs template for existing project setup with prisma as the default ORM As someone once said.
ez commands got brrrr.
  • For NestJs
git clone https://github.com/nestjs/typescript-starter.git project cd project yarn yarn add -D prisma npx prisma init
// prisma/scheme.prisma datasource db { provider = "postgresql" url = env("DATABASE_URL") } generator client { provider = "prisma-client-js" } model User { id Int @id @default(autoincrement()) name String email String @unique password String }
  • env("DATABASE_URL") is set in .env file
After that run :
yarn prisma generate yarn prisma migate dev init
https://imgur.com/Ns1ne5A.png
Now: onto the actual seeder using faker for generating random data and dotenv to initialize environment variables :
yarn add -D faker dotenv
Now create the script:
// prisma/seed.ts import { PrismaClient } from '@prisma/client'; import * as faker from 'faker'; import * as dotenv from 'dotenv'; const prisma = new PrismaClient(); const fakerUser = (): any => ({ name: faker.name.firstName() + faker.name.lastName(), email: faker.internet.email(), password: faker.internet.password(), }); async function main() { const fakerRounds = 10; dotenv.config(); console.log('Seeding...'); /// --------- Users --------------- for (let i = 0; i < fakerRounds; i++) { await prisma.user.create({ data: fakerUser() }); } }; main() .catch((e) => console.error(e)) .finally(async () => { await prisma.$disconnect(); });
  • Add the seeder to our
    package.json
    for ease of use:
{ ... "scripts":{ ... "seed": "ts-node prisma/seed.ts" } ... }
  • And then we run the seeder:
yarn seed
https://imgur.com/BXONdpJ.png
✨ That's it ✨ The preview of the database:
https://imgur.com/pT77pr7.png
  • Source code : https://github.com/100lvlmaster/nestjs-prisma-seeder-template
(If you're a beginner) don't be alarmed at the number of packages because devDependencies aren't bundled in the production build :]
You can find me at: https://100lvlmaster.in

Not Playing

Made with nextjs and ❤