1.安装Prisma
使用npm install prisma @prisma/client
安装prisma 和 prisma client
再输入 npx prsima
和npx prisma init
进行prisma的初始化
打开prisma目录中的schema.prisma
文件 在schema.prisma文件中设置好连接的数据库和创建对应的表之后
输入npx prisma gengrate
命令根据对应的表生成对应的TypeScript类型和prisma client
输入npx prisma migrate dev --name init
命令完成第一次迁移文件的生成
输入npx prisma db push
将修改和添加后的表结构同步更新到数据库中
2.Prisma单库连接与使用
nest g mo database/prisma --no-spec
创建prismaModule
nest g s database/prisma --no-spec
创建prismaService
scala
import { Injectable, OnModuleInit } from '@nestjs/common';
import { PrismaClient } from '@prisma/client';
@Injectable()
export class PrismaService extends PrismaClient implements OnModuleInit{
async onModuleInit() {
await this.$connect();
}
}
完成后在需要用到prisma的模块中进行improt导入prismaModule(在prismaModule中还需export导出prismaService)
再在对应服务中注入PrismaService即可使用
kotlin
@Inject(PrismaService)
private readonly prisma: PrismaService;//得到prisma实例
constres = await this.prisma.user.findMany();//从user表中查找数据
3.Prsima多数据库Client生成
我们生成PrismaClient通常使用命令npx prisma generate
生成对应SQL的Client
如果遇到多个不同类型的数据库postgres或mysql呢?
这里我们分别在prisma目录创建postgres.prisma和mysql.prisma文件
js
//postgres.prisma
generator client {
provider = "prisma-client-js"
output = "./clients/postgresql"
}
datasource db {
provider = "postgresql"
url = "postgres://root:123456@localhost:5432/testdb?"
}
model User {
id Int @id @default(autoincrement())
username String @unique
password String
@@map("users") //映射表名为users
}
js
mysql.prisma
generator client {
provider = "prisma-client-js"
output = "./clients/mysql"
}
datasource db {
provider = "mysql"
url = "mysql://root:123456@localhost:3306/testdb?"
}
model User {
id Int @id @default(autoincrement())
username String @unique
password String
@@map("users") //映射表名为users
}
修改generator中的output位置并指定在prisma/clients目录下生成client
执行命令npx prisma generate --shcema=./prisma/postgres.prisma
生成postgres的prismaClient
执行命令npx prisma generate --shcema=./prisma/mysql.prisma
生成mysql的prismaClient
我们会在prsima/clients目录下得到postgres和mysql的prismaClient,那么我们该如何在项目中正确的引用对应的client呢?

通过查看其中mysql的目录文件,可以发现生成出来的client是一个完整的package,我们可以通过命令npm install prisma-mysql@file:./prisma/clients/mysql
将生成的这个client作为依赖安装到项目中的package.json中去方便后续在项目中引用(prisma-mysql为本地安装的包名,./prisma/clients/mysql为包的路径)。 生成了对应Client之后我们在服务中只需按以下方式导入即可
js
import {PrismaClient as MySQLPrismaClient} from 'prisma-mysql'
import {PrismaClient as PostgresPrismaClient } from 'prisma-postgresql'