prisma

Prisma 是一个现代化的 ORM(对象关系映射)工具,专为 Node.js 和 TypeScript 设计,提供简洁、高效的数据库交互方式。它旨在简化数据库访问、提高开发效率,并增强代码的类型安全性。Prisma 支持多种数据库系统,包括 MySQL、PostgreSQL、SQLite、SQL Server 等。

Prisma 的主要组件

  1. Prisma Client:是自动生成的数据库访问客户端,允许你用 JavaScript/TypeScript 编写类型安全的查询语句来操作数据库。
  2. Prisma Migrate:提供数据库迁移功能,可以管理数据库架构的版本,生成和执行数据库迁移脚本。
  3. Prisma Studio:一个可视化的数据库管理界面,允许你查看和编辑数据库中的数据。

Prisma 的核心特性

1.类型安全:Prisma 的一个重要特性是自动生成的数据库查询 API 会严格遵循数据库模式(schema)的类型检查,帮助开发者在编译时发现错误,而不是运行时。通过 TypeScript 的强类型检查,减少了手动拼写查询时出现错误的风险。

2.查询构建器:Prisma 使用链式查询构建器,通过函数调用来构建数据库查询,而不是编写原生的 SQL 查询语句。它支持大多数常见的数据库操作,如 CRUD(增、删、查、改),以及更复杂的关联查询、聚合操作等。

3.支持关系型数据库:Prisma 可以与多种关系型数据库兼容,包括:

  • MySQL
  • PostgreSQL
  • SQLite
  • SQL Server
  • MongoDB(目前在实验阶段)
    5.自动化迁移:Prisma Migrate 可以自动生成数据库迁移文件,帮助你管理数据库架构的变化,避免了手动编写 SQL 迁移脚本的繁琐。

6.数据库推断和 Schema:Prisma 使用 schema.prisma 文件来定义数据库模型,并推断数据库表结构。该文件可以帮助开发者快速生成数据库相关的代码,并轻松管理数据库迁移。

安装和配置

1. 安装 Prisma

npm install prisma -g

2. 初始化 Prisma

在项目根目录下,使用 Prisma CLI 初始化 Prisma 配置:

 prisma init --datasource-provider mysql

将创建以下文件和目录:

  • prisma/schema.prisma:定义数据库模型的文件。
  • .env:存储数据库连接字符串的环境变量文件。

3. 配置数据库连接

在 .env 文件中,你需要配置数据库连接字符串。例如,对于 MySQL:

DATABASE_URL="mysql://user:password@localhost:3306/mydatabase"

4. 定义数据库模型

在 schema.prisma 文件中定义你的数据库模型,例如:

datasource db {
  provider = "mysql"
  url      = env("DATABASE_URL")
}

generator client {
  provider = "prisma-client-js"
}

model User {
  id    Int    @id @default(autoincrement())
  name  String
  email String @unique
  posts Post[]
}

model Post {
  id      Int    @id @default(autoincrement())
  title   String
  content String
  author  User   @relation(fields: [authorId], references: [id])
  authorId Int
}

5. 生成 Prisma Client

完成数据库模型定义后,使用以下命令生成 Prisma Client:

prisma generate

这会根据 schema.prisma 文件自动生成数据库访问代码,并将其放在 node_modules/@prisma/client 中。

使用 Prisma Client 进行数据库操作

生成 Prisma Client 后,你可以开始在应用程序中使用它来进行数据库操作。

  1. 导入 Prisma Client
const { PrismaClient } = require('@prisma/client');
const prisma = new PrismaClient();
  1. 创建数据
async function createUser() {
  const user = await prisma.user.create({
    data: {
      name: 'John Doe',
      email: 'john.doe@example.com',
    },
  });
  console.log(user);
}

createUser();
  1. 查询数据
    你可以使用 Prisma Client 来执行查询操作,例如:
async function getUsers() {
  const users = await prisma.user.findMany();
  console.log(users);
}

getUsers();
  1. 更新数据
async function updateUser() {
  const updatedUser = await prisma.user.update({
    where: { email: 'john.doe@example.com' },
    data: { name: 'John Doe Updated' },
  });
  console.log(updatedUser);
}

updateUser();
  1. 删除数据
async function deleteUser() {
  const deletedUser = await prisma.user.delete({
    where: { email: 'john.doe@example.com' },
  });
  console.log(deletedUser);
}

deleteUser();
  1. 使用关系查询
    Prisma 支持关系查询,能够非常方便地进行关联查询。例如,查询一个用户和他的帖子:
  const user = await prisma.user.findUnique({
    where: { email: 'john.doe@example.com' },
    include: { posts: true },
  });
  console.log(user);
}

getUserWithPosts();

Prisma Migrate(数据库迁移)

Prisma Migrate 用于管理数据库的架构更改。当你对数据库模型进行更改时,Prisma Migrate 会自动生成 SQL 脚本并将其应用到数据库。

  1. 创建迁移文件
    当你修改 schema.prisma 文件后,运行以下命令来生成数据库迁移文件:

    prisma migrate dev --name your_migration_name

这将生成迁移文件,并将其应用到数据库。

  1. 查看迁移历史
    使用以下命令查看迁移历史记录:

    prisma migrate status

  2. 执行数据库迁移
    将迁移应用到数据库:

npx prisma migrate deploy

Prisma Studio(可视化数据库管理)

Prisma Studio 是一个可视化界面,用于查看和管理数据库中的数据。

启动 Prisma Studio:

npx prisma studio
然后通过浏览器访问 http://localhost:5555 来管理数据库数据。

 

posted @ 2025-03-27 16:55  蜗牛般庄  阅读(93)  评论(0)    收藏  举报
Title
页脚 HTML 代码