Prisma + Postgres

2025-05-24

Prisma + Postgres

在本教程中,我们将探索如何设置 Prisma + Postgres。我们将使用涉及书籍和作者的真实示例。

Prisma + Postgres 的先决条件

在开始之前,请确保您已安装以下内容:

  • Node.js(v14 或更高版本)
  • npmyarn
  • Supabase上的帐户

设置 Prisma + Postgres

Supabase提供可与 Prisma 配合使用的托管 Postgres 数据库,让您无需搭建自己的数据库服务器即可轻松上手。Supabase 上手快捷,如果您的项目获得成功,它还能以经济高效的方式扩展到数百万用户。

  1. 创建新的 Supabase 项目
    • 登录您的Supabase 帐户
    • 点击“新建项目”
    • 填写项目详细信息,然后单击“创建新项目”
  2. 检索数据库连接详细信息

    • 在导航栏中,转到“项目设置” > “数据库”
    • 复制Postgres 的连接字符串(URI)。下一步你需要它:

      postgres://postgres.[ref]:[password]@[region].pooler.supabase.com:6543/postgres
      

在你的项目中设置 Prisma

Prisma 是一个 ORM,可简化 Node.js 应用程序中的数据库交互。

  1. 初始化 Node.js 项目

    mkdir prisma-postgres
    cd prisma-postgres
    npm init -y
    
    
  2. 安装 Prisma 和 Postgres 客户端

    npm install prisma --save-dev
    npm install @prisma/client
    
    
  3. 初始化 Prisma

    npx prisma init
    
    

    此命令创建一个prisma包含一个schema.prisma文件和一个.env文件的目录。

配置 Prisma + Postgres

  1. 设置数据库连接

    • 打开.env文件(位于新prisma文件夹中)。
    • 添加DATABASE_URL后您可以在此处DIRECT_URL获取连接详细信息

      DATABASE_URL="postgres://postgres.[ref]:[password]@aws-0-[region].pooler.supabase.com:6543/postgres?pgbouncer=true"
      
      DIRECT_URL="postgres://postgres.[ref]:[password]@aws-0-[region].pooler.supabase.com:5432/postgres"
      
      

直接连接(需要在端口 5432 上运行数据库迁移)。

  1. 定义数据模型

    • 打开prisma/schema.prisma
    • 更新datasource块以包含 DIRECT_URL,如下所示:

      datasource db {
        provider = "postgresql"
        url      = env("DATABASE_URL")
        directUrl = env("DIRECT_URL")
      }
      
      

    添加数据模型。对于图书馆系统:

    ```
    model Author {
      id     Int     @id @default(autoincrement())
      name   String
      books  Book[]
    }
    
    model Book {
      id        Int      @id @default(autoincrement())
      title     String
      author    Author   @relation(fields: [authorId], references: [id])
      authorId  Int
    }
    
    ```
    

生成 Postgres 模式

使用 Prisma Migrate 将您的模式应用到 Supabase 上的 Postgres 数据库。

npx prisma migrate dev --name init

Enter fullscreen mode Exit fullscreen mode

此命令将:

  • 生成迁移文件。
  • 将迁移应用到 Postgres 数据库。
  • 生成 Prisma 客户端。

使用 Prisma 客户端与 Prisma + Postgres 进行交互

创建一个script.js文件来测试数据库操作。

const { PrismaClient } = require('@prisma/client');
const prisma = new PrismaClient();

async function main() {
  // Create a new author
  const author = await prisma.author.create({
    data: {
      name: 'Yevgeny Zamyatin',
    },
  });

  // Create a new book
  const book = await prisma.book.create({
    data: {
      title: 'We',
      authorId: author.id,
    },
  });

  // Retrieve all books with their authors
  const books = await prisma.book.findMany({
    include: { author: true },
  });

  console.log(books);
}

main()
  .catch((e) => console.error(e))
  .finally(async () => {
    await prisma.$disconnect();
  });

Enter fullscreen mode Exit fullscreen mode

运行脚本:

node script.js

Enter fullscreen mode Exit fullscreen mode

您应该会看到登录到控制台的一系列书籍及其相关作者。

结论

恭喜!您已成功设置 Prisma 与 Postgres 的集成。此设置允许您使用 Prisma 与 Postgres 数据库无缝交互。


通过遵循本指南,您已经迈出了使用 Prisma 和 Postgres 构建强大应用程序的第一步。

文章来源:https://dev.to/awalias/prisma-postgres-4o09
PREV
Web 控制台终极指南🔥
NEXT
如何使用 Next.js 创建 PWA