我有 .env 文件
DATABASE_URL="sqlserver://srv:50119;initial catalog=mydb;user=aaa;password=bbb;"
然后像 schema.prisma
datasource db {
provider = "sqlserver"
url = env("DATABASE_URL")
}
generator client {
provider = "prisma-client-js"
previewFeatures = ["microsoftSqlServer"]
}
我使用以下方法生成客户端:
npx prisma generate
然后 Prisma 在我的快速应用程序中使用:
const prisma = new PrismaClient();
假设我想为用户使用不同的数据库进行多租户,我该如何实现?理想情况下,我想在运行时切换 db 连接,但似乎 DATABASE_URL 仅在 Prisma 生成期间读取,而不是在运行时读取,因此生成的客户端最终会使用硬编码的 db url。
答案 0 :(得分:0)
您可以使用 this 创建新的 PrismaClient
实例并传递动态 URL。
答案 1 :(得分:0)
所以只是确认一下,要在 express 中使用它,我应该这样做:
app.use(async function(req, res, next) {
const prisma = new PrismaClient({
datasources: {
db: {
url: "new db url goes here",
},
},
});
req.prisma = prisma;
next();
});
而不是这个?:
const prisma = new PrismaClient();
app.use(async function(req, res, next) {
req.prisma = prisma;
next();
});