我目前在运行 postgres 的项目上使用 prisma 2.20.1。
在他们的文档中,他们说导入 PrismaClient 并在整个应用程序中实例化它。
然而,从其他用例来看,您仅连接到数据库一次,在每条路线(我的项目结构设置为不同的文件和目录)、实例化和(再次连接到数据库?)上都感觉很奇怪。
我的观点是,有没有一种方法可以将数据库连接集中在一个文件中,并在整个应用程序中使用其实例?这样做安全吗?有什么后果吗?
我的想法是这样的:
// database.ts
import { PrismaClient } from '@prisma/client';
class Database {
constructor() {
this.db = new PrismaClient();
}
}
const database = new Database();
export default new Database();
Run Code Online (Sandbox Code Playgroud)
然后跨过routes文件
// specificRouteFile.ts
import db from 'database';
// run queries...
db.SomeTable.create({})
Run Code Online (Sandbox Code Playgroud)
受@Mahmoud Abdelwahab的启发,我创建了一个 TypeScript(实例)版本:
// lib/prisma.ts
import { PrismaClient } from '@prisma/client';
interface CustomNodeJsGlobal {
prisma: PrismaClient;
}
declare const global: CustomNodeJsGlobal;
const prisma = global.prisma || new PrismaClient();
if (process.env.NODE_ENV === 'development') global.prisma = prisma;
export default prisma;
Run Code Online (Sandbox Code Playgroud)
创建此文件后,您现在可以PrismaClient在任何地方导入此实例。您可以在此处获取有关实例 PrismaClient 的深入信息。
import prisma from '../lib/prisma';
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2171 次 |
| 最近记录: |