@nestjs/prisma如何集成
时间: 2023-08-10 10:07:07 浏览: 43
可以按照以下步骤来集成`@nestjs/prisma`:
1. 首先,需要在NestJS项目中安装`@nestjs/prisma`和`prisma`:
```
npm install --save @nestjs/prisma prisma
```
2. 在项目根目录下创建一个`prisma`目录,并在该目录下创建一个`schema.prisma`文件。该文件定义了数据库模型和关系:
```
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
model User {
id Int @id @default(autoincrement())
email String
name String?
posts Post[]
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model Post {
id Int @id @default(autoincrement())
title String
content String?
authorId Int
author User @relation(fields: [authorId], references: [id])
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
```
3. 创建一个`PrismaService`服务,用于与Prisma客户端进行交互:
```
import { Injectable } from '@nestjs/common';
import { PrismaClient } from '@prisma/client';
@Injectable()
export class PrismaService {
public prisma: PrismaClient;
constructor() {
this.prisma = new PrismaClient();
}
async onModuleDestroy() {
await this.prisma.$disconnect();
}
}
```
4. 在`app.module.ts`中导入`@nestjs/prisma`模块并配置`PrismaService`:
```
import { Module } from '@nestjs/common';
import { PrismaService } from './prisma.service';
import { PrismaModule } from '@nestjs/prisma';
@Module({
imports: [PrismaModule],
providers: [PrismaService],
exports: [PrismaService],
})
export class AppModule {}
```
5. 在控制器或服务中使用`PrismaService`:
```
import { Controller, Get } from '@nestjs/common';
import { PrismaService } from './prisma.service';
@Controller()
export class AppController {
constructor(private prisma: PrismaService) {}
@Get()
async getUsers() {
return this.prisma.user.findMany();
}
}
```
以上就是使用`@nestjs/prisma`集成Prisma的基本步骤。