Seeding NestJs with Prisma And Faker

  • 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/schema.prisma

// 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
After seeding

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
seed.ts

✨ 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://www.100lvlmaster.in

onw to 10x developer