如何解决仅实例化棱镜一次
我目前在一个运行 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();
然后跨路由文件
// specificRouteFile.ts
import db from 'database';
// run queries...
db.SomeTable.create({})
解决方法
您可以在一个文件中创建和初始化 Prisma,然后将其导入到不同的文件中。
//lib/prisma.js
import { PrismaClient } from "@prisma/client";
const prisma = new PrismaClient();
export default prisma;
然后在不同的文件中,例如,就做
import prisma from "./lib/prisma"
const posts = prisma.posts.findMany({})
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。