Prisma 的基本配置及使用

Basic configuration and use of Prisma.

Posted by Reckless on June 10, 2024

同事介绍了目前比较潮流的 ORM 框架,这里简单介绍一下它的基本使用

初始化一个 TypeScript 项目并将 Prisma CLI 作为开发依赖项添加到其中:

1
2
yarn init -y
yarn add prisma typescript ts-node @types/node --save-dev

接下来初始化 TypeScript:

1
npx tsc --init

现在,您可以通过在 Prisma CLI 中添加前缀 npx 来调用它:

1
npx prisma

接下来,使用以下命令创建 Prisma Schema 文件来设置 Prisma ORM 项目:

1
npx prisma init --datasource-provider mysql

在这种情况下,通过以下定义的 环境变量进行 url 设置:.env :

1
postgresql://USER:PASSWORD@HOST:PORT/DATABASE?schema=SCHEMA

以下是每个组件的简短说明:

  • USER :您的数据库用户的名称
  • PASSWORD :您的数据库用户的密码
  • HOSTlocalhost :主机名(对于本地环境来说,是 localhost
  • PORT:数据库服务器运行的端口(通常 3306 用于 MySQL)
  • DATABASE :数据库的名称
  • SCHEMA :数据库架构内部的名称

如果不确定要为 MySQL 连接 URL 的参数提供什么,您可以忽略它。在这种情况下,将使用schema默认架构名称 public

从数据库中推导数据模型,并将推导得到的模型更新到 Prisma Schema 文件中通常是(schema.prisma

1
prisma db pull

prisma db pull 的主要作用是根据当前数据库的实际情况更新 Prisma Schema 文件中的数据模型定义。它会自动推导数据库中的表、列、索引等信息,并将这些信息更新到 Prisma Schema 文件中,以便在代码中使用 Prisma Client 访问数据库时,能够更方便地与数据库交互。

读取的 Prisma 模式并生成 Prisma 客户端库:

1
prisma generate

workflow.png

编写 index.ts 操作数据库的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import { PrismaClient } from '@prisma/client'

const prisma = new PrismaClient()

async function main() {
  // ... you will write your Prisma Client queries here

    await prisma.user.create({
        data: {
            name: 'Alice',
            account: '10086'
        },
    })

    const allUsers = await prisma.user.findMany()
    console.dir(allUsers, { depth: null })
}

main()
    .then(async () => {
      await prisma.$disconnect()
    })
    .catch(async (e) => {
      console.error(e)
      await prisma.$disconnect()
      process.exit(1)
    })

prisma.user 是通过 Prisma Client 访问数据库中的用户表的方式。在 Prisma 中,每个模型都对应数据库中的一个表,而 prisma.user 就是表示用户模型的方式。

当使用 Prisma 时,可以通过 prisma.user 来执行各种数据库操作,如创建新用户、查询用户信息、更新用户数据或删除用户等。

让我们更详细地解释一下:

  • prisma:这是使用 Prisma 生成的客户端库对象。它提供了访问数据库的所有方法。
  • user:这是在 Prisma Schema 中定义的模型之一。在 Prisma Schema 中,可以定义多个模型来映射数据库中的不同表或集合。例如,可能会定义一个名为 User 的模型来映射用户表。

当使用 prisma.user 时,实际上是在操作与用户相关的数据表。例如,可以使用 prisma.user.findMany() 来查询所有用户的信息,或者使用 prisma.user.create() 来创建新用户。

最后可以用 ts-node index 执行 index.ts:

result.png



App ready for offline use.