Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is Prisma ORM used for in a Next.js project?
Prisma ORM helps manage database access by providing an easy and safe way to read and write data using JavaScript or TypeScript instead of raw SQL queries.
Click to reveal answer
beginner
Which command initializes Prisma in a Next.js project?
The command npx prisma init sets up Prisma by creating a prisma folder with a schema file and a .env file for database connection.
Click to reveal answer
intermediate
What is the purpose of the schema.prisma file?
It defines your database models (tables) and their fields, plus the database connection details. Prisma uses it to generate code for database operations.
Click to reveal answer
intermediate
How do you generate Prisma Client after updating the schema?
Run npx prisma generate to create the Prisma Client, which is the code you use in your app to interact with the database.
Click to reveal answer
beginner
Why should you add Prisma Client to your Next.js API routes?
Adding Prisma Client lets your API routes read and write data safely and efficiently, making your app dynamic and connected to your database.
Click to reveal answer
What file does npx prisma init create to store your database connection URL?
A.env
Bpackage.json
Cnext.config.js
Dprisma/schema.prisma
✗ Incorrect
The .env file stores environment variables like the database connection URL securely.
Which command updates your database schema after changing schema.prisma?
Anpx prisma migrate dev
Bnpm run dev
Cnpx prisma generate
Dnext build
✗ Incorrect
npx prisma migrate dev applies schema changes to your database.
Where do you import Prisma Client in a Next.js project?
AIn static HTML files
BIn CSS files
CIn API route files
DIn the public folder
✗ Incorrect
Prisma Client is used in API routes to interact with the database.
What language is Prisma Client generated in for Next.js projects?
AJava
BJavaScript/TypeScript
CRuby
DPython
✗ Incorrect
Prisma Client is generated in JavaScript or TypeScript to work with Next.js.
Which folder does Prisma create to hold its schema file?
Acomponents
Bsrc
Cpages
Dprisma
✗ Incorrect
The prisma folder contains the schema.prisma file.
Explain the steps to set up Prisma ORM in a new Next.js project.
Think about installation, initialization, configuration, migration, and usage.
You got /7 concepts.
Describe how Prisma Client helps in managing database operations in Next.js.
Focus on how Prisma Client makes database work easier and safer.
You got /5 concepts.
Practice
(1/5)
1. What is the primary purpose of the schema.prisma file in a Next.js project using Prisma ORM?
easy
A. To write API routes for Next.js
B. To define the database models and their relationships
C. To configure Next.js page routing
D. To style the application components
Solution
Step 1: Understand the role of schema.prisma
This file is used to define the data models and how they relate to each other in the database.
Step 2: Differentiate from other files in Next.js
API routes and page routing are handled by Next.js files, not schema.prisma. Styling is done with CSS or styling libraries.
Final Answer:
To define the database models and their relationships -> Option B
Quick Check:
schema.prisma = data models [OK]
Hint: Remember: schema.prisma defines your database structure [OK]
Common Mistakes:
Confusing schema.prisma with API route files
Thinking schema.prisma handles styling
Assuming schema.prisma manages Next.js routing
2. Which of the following is the correct way to import and instantiate the Prisma Client in a Next.js API route?
easy
A. import { PrismaClient } from '@prisma/client'; const prisma = new PrismaClient();
B. const prisma = require('@prisma/client').PrismaClient();
C. import prisma from '@prisma/client'; const client = new prisma();
D. import Prisma from 'prisma'; const prisma = Prisma.Client();
Solution
Step 1: Check the correct import syntax for Prisma Client
The official way is to import PrismaClient as a named import from '@prisma/client'.
Step 2: Instantiate PrismaClient correctly
Use the new keyword to create an instance: new PrismaClient().
Final Answer:
import { PrismaClient } from '@prisma/client'; const prisma = new PrismaClient(); -> Option A
Quick Check:
Correct import and instantiation = import { PrismaClient } from '@prisma/client'; const prisma = new PrismaClient(); [OK]
Hint: Use named import and new keyword for PrismaClient [OK]
Common Mistakes:
Using require() instead of import
Calling PrismaClient as a function without new
Incorrect import paths or default imports
3. Given the following Prisma model in schema.prisma:
model Post {
id Int @id @default(autoincrement())
title String
published Boolean @default(false)
}
What will be the result of this Prisma Client query?
B. An array of all posts regardless of published status
C. An error because 'published' is not a valid field
D. An array of posts where published is true
Solution
Step 1: Understand the Prisma model and query
The model has a Boolean field published. The query filters posts where published is true.
Step 2: Analyze the query result
findMany returns an array of all matching posts, so it returns all posts with published: true.
Final Answer:
An array of posts where published is true -> Option D
Quick Check:
findMany with where filter = array filtered by condition [OK]
Hint: findMany returns arrays filtered by where conditions [OK]
Common Mistakes:
Expecting a single object instead of an array
Ignoring the where filter and expecting all posts
Thinking 'published' field does not exist
4. You wrote this code in a Next.js API route:
import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
export default async function handler(req, res) {
const user = await prisma.user.findUnique({ where: { id: req.query.id } });
res.json(user);
}
But you get an error: TypeError: Cannot read property 'id' of undefined. What is the likely cause?
medium
A. PrismaClient is not instantiated correctly
B. The findUnique method does not exist
C. The req.query object is undefined or missing id
D. You forgot to import res from Next.js
Solution
Step 1: Identify the error cause
The error says Cannot read property 'id' of undefined, meaning req.query is undefined or id is missing.
Step 2: Check the API route usage
Ensure the request URL includes a query parameter ?id=someValue so req.query.id exists.
Final Answer:
The req.query object is undefined or missing id -> Option C
Quick Check:
Missing query param causes undefined error [OK]
Hint: Check if query parameters exist before accessing them [OK]
Common Mistakes:
Assuming PrismaClient instantiation causes this error
Thinking findUnique method is invalid
Trying to import res object explicitly
5. You want to add a new model Comment related to Post in your Prisma schema, where each comment belongs to one post. Which of the following schema additions correctly sets up this relationship?
hard
A. model Comment {
id Int @id @default(autoincrement())
content String
postId Int
post Post @relation(fields: [postId], references: [id])
}
model Post {
id Int @id @default(autoincrement())
title String
comments Comment[]
}
B. model Comment {
id Int @id @default(autoincrement())
content String
post Post
}
model Post {
id Int @id @default(autoincrement())
title String
}
C. model Comment {
id Int @id @default(autoincrement())
content String
postId Int
}
model Post {
id Int @id @default(autoincrement())
title String
comments Comment[]
}
D. model Comment {
id Int @id @default(autoincrement())
content String
postId Int
post Post
}
model Post {
id Int @id @default(autoincrement())
title String
comments Comment[]
}
Solution
Step 1: Understand Prisma relations syntax
To relate Comment to Post, Comment needs a foreign key postId and a relation field post with @relation specifying fields and references.
Step 2: Check the Post model for back relation
Post should have a comments field as an array of Comment to represent one-to-many relation.
Final Answer:
Option A correctly defines the foreign key, relation, and back relation -> Option A
Quick Check:
Relation fields with @relation and back array = model Comment {
id Int @id @default(autoincrement())
content String
postId Int
post Post @relation(fields: [postId], references: [id])
}
model Post {
id Int @id @default(autoincrement())
title String
comments Comment[]
} [OK]
Hint: Use @relation with fields and references for foreign keys [OK]