Prisma 是一个开源的 Node.js
和 Typescript ORM
(对象关系映射器),它充当应用程序和数据库之间的一种中间件,帮助您管理和使用数据库。它目前支持 PostgreSQL
、MySQL
、SQL Server
、SQLite
,它的一些功能也支持 MongoDB
。
我最近的任务是使用 Next.js
应用程序设置 MySQL
数据库。我的目标是使用 Next.js
的无服务器功能连接数据库。
以下是我为实现这一目标而采取的步骤。
安装并调用 Prisma
为了在项目中使用 Prisma
,首先将其 CLI
安装为开发依赖项。
npm install prisma --save-dev
下一步是初始化 Prisma
。您只需在设置过程中执行一次。
npx prisma init
此时,Prisma CLI
在您的根目录中创建了一些文件。prisma
文件夹中的schema.prisma
文件是我们定义数据源提供程序和数据库中表的模式的地方。但是,如果您已经有一个现有的数据库,则无需从头开始创建模式,因为Prisma
会为您处理 😉。我很快就会告诉你。
连接数据库
第一步是将schema.prisma
文件中的数据源提供程序修改为如下所示。
datasource db {
provider = "mysql"
url = env("DATABASE_URL")
}
我将provider
设置为我正在使用的数据库类型。在我的例子中,它是mysql
。url
属性将采用 Prisma
创建的.env
文件中定义的连接url
的值。
DATABASE_URL="mysql://USER:PASSWORD@HOST:PORT/DATABASE"
以上是如何编写连接 url
的格式。
生成数据模型
下一步是生成数据模型/模式。这是如何发生的; Prisma
使用您提供的连接 url
连接到数据库。 Prisma
和数据库进行了简短的交谈,然后 Prisma
会返回数据库结构的模型,即数据类型、关系以及它需要了解的有关数据库的任何其他信息😄
为此,我们运行命令
npx prisma db pull
如果命令成功运行,Prisma
将从 MySQL
生成模型到保存在prisma.schema
文件中的 Prisma
数据模型中。如果 Prisma
模式对您来说是新的,请查看他们的文档
从数据库中读取数据
为了使用Prisma
执行 CRUD
(创建、读取、更新、删除)操作,我们需要安装@prisma/client
包。
npm install @prisma/client
创建一个Prisma实例
安装软件包后,下一个重要步骤是创建一个 Prisma
实例,该实例将被导入到我们需要使用它的任何地方。我们需要单个实例的原因是因为每次我们在一个文件中初始化 Prisma
客户端时,它都会创建一个到数据库的连接器,如果在多个文件中初始化它可能会耗尽数据库连接限制。
// utils/prisma.js
import { PrismaClient } from "@prisma/client";
let prisma;
if (process.env.NODE_ENV === "production") {
prisma = new PrismaClient();
}
// `stg` or `dev`
else {
if (!global.prisma) {
global.prisma = new PrismaClient();
}
prisma = global.prisma;
}
export default prisma;
从数据库中取数据
N/B Prisma Client
从后端工作,因此我们必须从无服务器函数或Nodejs
应用程序调用它。
// /pages/api/fetchUsers.js
import prisma from "../../utils/prisma";
export default async function handler(req, res) {
try {
const results = await prisma.users.findMany();
return res.status(200).json(results);
} catch (error) {
return res.status(500).json({ message: error.message });
}
}