Bird
Raised Fist0
NestJSframework~5 mins

Prisma Client usage in NestJS - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is Prisma Client in the context of NestJS?
Prisma Client is an auto-generated database client that lets you easily read and write data in your database using simple and type-safe JavaScript or TypeScript code within a NestJS application.
Click to reveal answer
beginner
How do you typically inject Prisma Client into a NestJS service?
You create a PrismaService that extends PrismaClient and mark it as injectable. Then you inject PrismaService into other services via constructor injection to access database methods.
Click to reveal answer
beginner
What method would you use to find a single record by its unique ID using Prisma Client?
You use the findUnique method with a where clause specifying the unique ID, for example: prisma.user.findUnique({ where: { id: 1 } }).
Click to reveal answer
intermediate
Why is Prisma Client considered type-safe?
Because Prisma Client generates TypeScript types based on your database schema, it helps catch errors early by providing autocomplete and compile-time checks when you write queries.
Click to reveal answer
intermediate
How do you handle database connection cleanup in Prisma Client within a NestJS app?
You override the onModuleDestroy lifecycle hook in your PrismaService to call this.$disconnect(), ensuring the database connection closes properly when the app stops.
Click to reveal answer
Which method in Prisma Client is used to create a new record?
Acreate()
Binsert()
Cadd()
Dnew()
How do you access Prisma Client inside a NestJS service?
ABy injecting a PrismaService that extends PrismaClient
BBy importing PrismaClient directly in every service
CBy calling PrismaClient as a global variable
DBy using PrismaClient without any import
What does the findUnique() method require to find a record?
AA filter object with any field
BAn array of IDs
CA where clause with a unique field
DNo parameters
Which lifecycle hook is used in NestJS to disconnect Prisma Client on app shutdown?
AonModuleInit
BafterApplicationShutdown
CbeforeApplicationShutdown
DonModuleDestroy
Why is Prisma Client preferred over raw SQL queries in NestJS?
AIt is faster than SQL
BIt provides type safety and easier syntax
CIt does not require a database
DIt automatically creates database tables
Explain how you set up and use Prisma Client in a NestJS service.
Think about dependency injection and how PrismaClient methods are accessed.
You got /4 concepts.
    Describe how Prisma Client ensures type safety and why it matters.
    Consider how TypeScript helps prevent mistakes.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of Prisma Client in a NestJS application?
      easy
      A. To interact with the database using simple JavaScript calls
      B. To handle HTTP requests and routing
      C. To manage application state in the frontend
      D. To style components with CSS

      Solution

      1. Step 1: Understand Prisma Client's role

        Prisma Client is a tool that helps you talk to your database easily using JavaScript.
      2. Step 2: Compare with other options

        Handling HTTP requests and routing, managing frontend state, and styling components relate to other parts of an app, not database interaction.
      3. Final Answer:

        To interact with the database using simple JavaScript calls -> Option A
      4. Quick Check:

        Prisma Client = database interaction [OK]
      Hint: Prisma Client is for database queries, not UI or routing [OK]
      Common Mistakes:
      • Confusing Prisma Client with HTTP routing
      • Thinking Prisma Client manages frontend state
      • Assuming Prisma Client styles components
      2. Which of the following is the correct way to import and instantiate Prisma Client in a NestJS service?
      easy
      A. import { PrismaClient } from '@prisma/client'; const prisma = new PrismaClient();
      B. const prisma = require('prisma-client');
      C. import Prisma from 'prisma'; const prisma = Prisma();
      D. import { Prisma } from '@nestjs/prisma'; const prisma = new Prisma();

      Solution

      1. Step 1: Check the official import syntax

        The correct import is from '@prisma/client' and creating a new PrismaClient instance.
      2. Step 2: Identify incorrect options

        Using require('prisma-client'), importing from 'prisma', or using '@nestjs/prisma' with incorrect instantiation do not match Prisma Client usage.
      3. Final Answer:

        import { PrismaClient } from '@prisma/client'; const prisma = new PrismaClient(); -> Option A
      4. Quick Check:

        Correct import and instantiation = import { PrismaClient } from '@prisma/client'; const prisma = new PrismaClient(); [OK]
      Hint: Always import PrismaClient from '@prisma/client' and instantiate with new [OK]
      Common Mistakes:
      • Using require instead of import
      • Wrong package names like 'prisma-client'
      • Confusing NestJS modules with Prisma Client
      3. Given this Prisma Client query in a NestJS service:
      const user = await prisma.user.findUnique({ where: { id: 5 } });
      console.log(user);

      What will be logged if a user with id 5 exists in the database?
      medium
      A. An array of all users in the database
      B. A syntax error
      C. null
      D. An object containing the user's data with id 5

      Solution

      1. Step 1: Understand findUnique behavior

        findUnique returns a single record matching the condition or null if none found.
      2. Step 2: Given user with id 5 exists

        The query returns the user object with id 5, so console.log prints that object.
      3. Final Answer:

        An object containing the user's data with id 5 -> Option D
      4. Quick Check:

        findUnique with existing id = user object [OK]
      Hint: findUnique returns one object or null, not array [OK]
      Common Mistakes:
      • Expecting an array instead of an object
      • Assuming null even if user exists
      • Thinking it causes syntax error
      4. Identify the error in this NestJS Prisma Client usage:
      import { PrismaClient } from '@prisma/client';
      const prisma = new PrismaClient();

      async function getUsers() {
      const users = prisma.user.findMany();
      return users;
      }
      medium
      A. Function getUsers should not be async
      B. Missing await before prisma.user.findMany()
      C. findMany() does not exist on prisma.user
      D. PrismaClient should not be instantiated directly

      Solution

      1. Step 1: Check async function usage

        prisma.user.findMany() returns a Promise, so it must be awaited inside async functions.
      2. Step 2: Identify missing await

        The code misses 'await' before the call, so it returns a Promise instead of resolved data.
      3. Final Answer:

        Missing await before prisma.user.findMany() -> Option B
      4. Quick Check:

        Async DB calls need await [OK]
      Hint: Await all Prisma async calls inside async functions [OK]
      Common Mistakes:
      • Forgetting await on async Prisma calls
      • Thinking PrismaClient can't be instantiated
      • Assuming findMany() is invalid
      5. In a NestJS app, you want to ensure Prisma Client connects once on app start and disconnects on shutdown. Which approach is best?
      hard
      A. Call prisma.$connect() before every query and prisma.$disconnect() after every query
      B. Create a new PrismaClient instance inside every controller method
      C. Create PrismaClient instance in a service, call prisma.$connect() in onModuleInit(), and prisma.$disconnect() in onModuleDestroy()
      D. Use PrismaClient without calling connect or disconnect methods

      Solution

      1. Step 1: Understand PrismaClient lifecycle

        PrismaClient should connect once when app starts and disconnect on shutdown to manage resources efficiently.
      2. Step 2: Evaluate options

        Creating a single PrismaClient instance in a service and using $connect() in onModuleInit() and $disconnect() in onModuleDestroy() leverages NestJS lifecycle hooks properly. Connecting/disconnecting per query, creating new instances per method, or skipping explicit management leads to overhead or resource leaks.
      3. Final Answer:

        Create PrismaClient instance in a service, call prisma.$connect() in onModuleInit(), and prisma.$disconnect() in onModuleDestroy() -> Option C
      4. Quick Check:

        Use lifecycle hooks for Prisma connection [OK]
      Hint: Connect once on start, disconnect on shutdown using lifecycle hooks [OK]
      Common Mistakes:
      • Creating PrismaClient multiple times
      • Connecting/disconnecting on every query
      • Ignoring connect/disconnect lifecycle
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard