Prisma 对 Next.js 有很好的支持,直接通过 Prisma 提供初始化方法执行即可使用,比起其他 ORM ,配置简单,易于使用。
导出 prisma 实例
在开发中,next dev 会在运行时清除 Node.js 缓存,会重新初始化新的 PrismaClient 实例,这可能会很快耗尽数据库连接,因为每个 PrismaClient 实例都拥有自己的连接池。
解决方案是实例化单个实例 PrismaClient 并将其保存在 globalThis 对象上:
import { PrismaClient } from '@prisma/client'
const prismaClientSingleton = () => {
return new PrismaClient().$extends({
result: {
user: {
fullName: {
needs: { firstName: true, lastName: true },
compute(user) {
return `${user.firstName} ${user.lastName}`
},
},
},
},
})
}
使用
直接导出 prisma 示例即可使用:
import prisma from '@/utils/prisma';
export async function getPost(id: number) {
let data = await prisma.post.findUnique({
where: {
id,
},
include: {
collections: {
include: {
collection: true,
},
},
},
});
return data;
}