Prisma for JavaScript (Node.js): 完整指南及示例

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

Prisma for JavaScript (Node.js): 完整指南及示例

\n\n

Prisma 是一个用于 Node.js 和 TypeScript 的现代 ORM(对象关系映射),它从根本上改变了与数据库交互的方式。与传统的 ORM 不同,Prisma 提供了声明式数据模型、自动生成类型安全客户端以及强大的迁移工具。如果您厌倦了手动编写 SQL 查询、数据类型混乱以及复杂的 ORM 配置,Prisma 将是您的救星。

\n\n

为什么需要 Prisma?首先,它在数据库层面提供了类型安全。这意味着,与字段类型错误或缺少关联相关的错误将在编译阶段被发现,而不是在运行时。其次,Prisma 为 CRUD 操作、数据过滤、排序和聚合提供了直观的 API。第三,它会自动生成数据模式的文档,并允许您通过迁移轻松管理模式变更。

\n\n

Prisma 支持主流关系型数据库:PostgreSQL、MySQL、SQLite、SQL Server、MongoDB(文档模式)。凭借其架构,它既适用于小型项目,也适用于企业级应用。本文将详细介绍 Prisma 在 Node.js 环境中的安装、主要方法及实际使用示例。

\n\n

安装

\n\n

安装 Prisma 包括两个步骤:安装 CLI(命令行界面)和初始化项目。在项目的终端中执行以下命令:

\n\n
npm install prisma --save-dev\nnpm install @prisma/client
\n\n

安装后,在项目中初始化 Prisma:

\n\n
npx prisma init
\n\n

此命令将创建 prisma 目录(包含 schema.prisma 文件)和用于环境变量的 .env 文件。在 .env 文件中,指定数据库连接字符串。例如,对于 PostgreSQL:

\n\n
DATABASE_URL="postgresql://user:password@localhost:5432/mydb"
\n\n

对于 MySQL:

\n\n
DATABASE_URL="mysql://user:password@localhost:3306/mydb"
\n\n

对于 SQLite(文件型数据库):

\n\n
DATABASE_URL="file:./dev.db"
\n\n

快速入门:最小工作示例

\n\n

让我们创建一个简单的用户模型并执行基本操作。编辑 prisma/schema.prisma 文件:

\n\n
// 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\n
npx prisma migrate dev --name init
\n\n

迁移成功后,生成 Prisma Client:

\n\n
npx prisma generate
\n\n

现在创建 index.js 文件并编写一个简单的脚本:

\n\n
// 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  // 创建一个帖子                    

推荐