Seeding NestJs with Prisma And Faker

https://res.cloudinary.com/practicaldev/image/fetch/s--3wy3Npjz--/c_imagga_scale,f_auto,fl_progressive,h_420,q_auto,w_1000/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9g3udn7z341ltch04diy.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

Home

About

Blog

Work

Made with nextjs and ❤