Prisma是一个ORM框架,可以为不同的数据库提供统一的API。以下是一个使用Prisma同时连接MySQL和MongoDB的例子:
- 安装Prisma CLI
首先,需要安装Prisma CLI,并创建一个新的Prisma项目。
npm i prisma -g
prisma init myproject
- 配置MySQL连接
进入Prisma项目目录,在prisma/schema.prisma
文件中添加MySQL数据库连接信息。
datasource mysql {
provider = "mysql"
url = "mysql://USER:PASSWORD@HOST:PORT/DATABASE"
}
替换USER
、PASSWORD
、HOST
、PORT
、DATABASE
为实际的MySQL连接信息。
- 创建MySQL数据模型
在prisma/schema.prisma
文件中定义MySQL数据库的数据模型。
model User {
id Int @id @default(autoincrement())
name String
email String @unique
posts Post[]
}
model Post {
id Int @id @default(autoincrement())
title String
content String?
authorId Int
author User @relation(fields: [authorId], references: [id])
}
这里定义了两个模型:User和Post,User拥有多个Post。其中,@id
表示该字段是主键,@default(autoincrement())
表示自增长。
- 运行Prisma migration
在终端中运行以下命令,生成并执行MySQL数据库迁移脚本。
npx prisma migrate save --name init --preview-feature
npx prisma migrate up --preview-feature
这将在MySQL数据库中创建User和Post表。
- 配置MongoDB连接
在prisma/schema.prisma
文件中添加MongoDB数据库连接信息。
datasource mongo {
provider = "mongodb"
url = "mongodb://USER:PASSWORD@HOST:PORT/DATABASE"
}
替换USER
、PASSWORD
、HOST
、PORT
、DATABASE
为实际的MongoDB连接信息。
- 创建MongoDB数据模型
在prisma/schema.prisma
文件中定义MongoDB数据库的数据模型。
model Log {
id String @id @default(uuid())
level String
message String?
createdAt DateTime @default(now())
}
这里定义了一个模型:Log。其中,@id
表示该字段是主键,@default(uuid())
表示使用UUID作为默认值。
- 运行Prisma migration
在终端中运行以下命令,生成并执行MongoDB数据库迁移脚本。
npx prisma migrate save --name init-mongo --preview-feature
npx prisma migrate up --preview-feature
这将在MongoDB数据库中创建Log集合。
- 使用Prisma API操作不同的数据库
现在可以使用Prisma API操作MySQL和MongoDB数据库了。以下是一个简单的例子:
const { PrismaClient } = require('@prisma/client')
const prisma = new PrismaClient()
async function main() {
// 使用MySQL
const user = await prisma.user.create({
data: {
name: 'Alice',
email: 'alice@example.com',
posts: {
create: {
title: 'Hello, World!',
content: 'This is my first post.'
}
}
},
include: { posts: true }
})
console.log(user)
// 使用MongoDB
const log = await prisma.log.create({
data: {
level: 'info',
message: 'Hello, MongoDB!'
}
})
console.log(log)
}
main()
.catch(err => console.error(err))
.finally(async () => await prisma.$disconnect())
这里使用prisma.user.create()
方法向MySQL数据库中创建一个用户和一篇文章,并通过include
选项将文章也返回。然后使用prisma.log.create()
方法向MongoDB数据库中创建一条日志。最后,调用prisma.$disconnect()
方法关闭连接。
以上就是一个使用Prisma同时连接MySQL和MongoDB的例子。