How to set up a Prisma Client That Uses MongoDB as a Second Database
| 1 min read
最近在 Recos 项目中将字幕文件的存储转移到了 Mongo 数据库,前端项目采用的是 Nextjs + Prisma 的框架,于是需要 Prisma 添加 Mongo 的支持,其中还是遇到了一些小坑,在此记录下。
Prisma 本身是不支持连接到多个数据库的,实现方法是在 prisma
目录中新建一个文件名为 mongo_schema.prisma
generator client {
provider = "prisma-client-js"
output = "./generated/mongo_client"
}
datasource db {
provider = "mongodb"
url = env("MONGO_URL")
}
model subtitle {
id_ String @id @default(auto()) @map("_id") @db.ObjectId
...
}
主要是在 client 里面添加 output 字段,首先在项目 .env
文件中添加 MONGO_URL
,然后执行 prisma generate --schema=prisma/mongo_schema.prisma
,就会在 prisma
目录下生成 prisma client 的代码。
通过以下方法引入后就可以使用了。
import { PrismaClient as PrismaMongoClient } from "../prisma/generated/mongo_client";
值得注意的是,如果你连接到 Mongo 数据库报以下错误时
import { PrismaClient as PrismaMongoClient } from "../prisma/generated/mongo_client";
可以尝试在环境变量文件 MONGO_URL
后添加 ?authSource=admin