Prisma for JavaScript (Node.js): 完整指南及示例
\n\nPrisma 是一个用于 Node.js 和 TypeScript 的现代 ORM(对象关系映射),它从根本上改变了与数据库交互的方式。与传统的 ORM 不同,Prisma 提供了声明式数据模型、自动生成类型安全客户端以及强大的迁移工具。如果您厌倦了手动编写 SQL 查询、数据类型混乱以及复杂的 ORM 配置,Prisma 将是您的救星。
\n\n为什么需要 Prisma?首先,它在数据库层面提供了类型安全。这意味着,与字段类型错误或缺少关联相关的错误将在编译阶段被发现,而不是在运行时。其次,Prisma 为 CRUD 操作、数据过滤、排序和聚合提供了直观的 API。第三,它会自动生成数据模式的文档,并允许您通过迁移轻松管理模式变更。
\n\nPrisma 支持主流关系型数据库:PostgreSQL、MySQL、SQLite、SQL Server、MongoDB(文档模式)。凭借其架构,它既适用于小型项目,也适用于企业级应用。本文将详细介绍 Prisma 在 Node.js 环境中的安装、主要方法及实际使用示例。
\n\n安装
\n\n安装 Prisma 包括两个步骤:安装 CLI(命令行界面)和初始化项目。在项目的终端中执行以下命令:
\n\nnpm install prisma --save-dev\nnpm install @prisma/client\n\n安装后,在项目中初始化 Prisma:
\n\nnpx prisma init\n\n此命令将创建 prisma 目录(包含 schema.prisma 文件)和用于环境变量的 .env 文件。在 .env 文件中,指定数据库连接字符串。例如,对于 PostgreSQL:
DATABASE_URL="postgresql://user:password@localhost:5432/mydb"\n\n对于 MySQL:
\n\nDATABASE_URL="mysql://user:password@localhost:3306/mydb"\n\n对于 SQLite(文件型数据库):
\n\nDATABASE_URL="file:./dev.db"\n\n快速入门:最小工作示例
\n\n让我们创建一个简单的用户模型并执行基本操作。编辑 prisma/schema.prisma 文件:
// prisma/schema.prisma\ngenerator client {\n provider = "prisma-client-js"\n}\n\ndatasource db {\n provider = "sqlite" // 或 "postgresql", "mysql"\n url = env("DATABASE_URL")\n}\n\nmodel User {\n id Int @id @default(autoincrement())\n email String @unique\n name String?\n posts Post[]\n}\n\nmodel Post {\n id Int @id @default(autoincrement())\n title String\n content String?\n published Boolean @default(false)\n author User @relation(fields: [authorId], references: [id])\n authorId Int\n}\n\n现在执行迁移以在数据库中创建表:
\n\nnpx prisma migrate dev --name init\n\n迁移成功后,生成 Prisma Client:
\n\nnpx prisma generate\n\n现在创建 index.js 文件并编写一个简单的脚本:
// index.js\nconst { PrismaClient } = require('@prisma/client');\n\nconst prisma = new PrismaClient();\n\nasync function main() {\n // 创建一个新用户\n const user = await prisma.user.create({\n data: {\n email: 'alice@example.com',\n name: 'Alice',\n },\n });\n console.log('Created user:', user);\n\n // 创建一个帖子