prisma with nextjs
- Published
- Reading time
- 2 min read
- Length
- 396 words
On this page
Prisma with Next.js#
If you are looking for a robust ORM (Object-Relational Mapping) tool to use with your Next.js application, Prisma is a great option. Prisma makes it easy to communicate with your database in a type-safe and intuitive way.
Step 1: Install Prisma#
To install Prisma, you will need to have Node.js and npm installed on your machine. Once you have those, run the following command:
npm install prisma --saveStep 2: Configure Prisma#
Before you can start using Prisma, you need to create a configuration file. This file will define your database connection and schema. To create the file, run:
npx prisma initThis will create a new directory in your project called `prisma`. Inside that directory, you will find a `schema.prisma` file.
Example schema.prisma file:
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
}In this example, we have defined a Postgres database as our datasource and created a `User` model with three fields (id, name, and email).
Step 3: Generate Prisma Client#
The `generator` block in your `schema.prisma` file defines how Prisma will generate the client that you will use to interact with your database. To generate the client, run:
npx prisma generateThis will create a new `node_modules` directory in your project with the `@prisma/client` package. You can now import this package and start using it in your Next.js application.
Step 4: Use Prisma in Next.js#
Now that you have generated the Prisma client, you can use it in your Next.js application. Here's an example of how you might use it to fetch a list of users:
// pages/users.js
import { PrismaClient } from "@prisma/client";
const prisma = new PrismaClient();
export default function Users({ users }) {
return (
<div>
<h1>Users</h1>
<ul>
{users.map((user) => (
<li key={user.id}>{user.name}</li>
))}
</ul>
</div>
);
}
export async function getStaticProps() {
const users = await prisma.user.findMany();
return {
props: {
users,
},
};
}In this example, we import the `PrismaClient` from `@prisma/client` and create a new instance of it. We then define a Next.js page component that fetches a list of users using the `findMany` method on the `user` model. Finally, we export a `getStaticProps` function that fetches the data at build time and passes it as a prop to our page component.