在本教程中,我們將探討如何設置 Prisma + Postgres。我們將使用與書籍和作者相關的現實世界示例。

Prisma + Postgres 的先決條件

在開始之前,請確保您已安裝以下項目:

  • Node.js (v14 或更高版本)
  • npmyarn
  • 一個 Supabase 帳戶

設置 Prisma + Postgres

Supabase 提供了一個可供 Prisma 使用的托管 Postgres 數據庫,使您能夠輕鬆開始,而無需設置自己的數據庫伺服器。如果您的項目取得成功,Supabase 是一個快速且經濟的擴展到數百萬用戶的方法。

  1. 創建新的 Supabase 專案
    • 登入您的 Supabase 帳戶
    • 點擊 "New Project"
    • 填寫專案詳細信息並點擊 "Create new project"
  2. 檢索數據庫連接詳細信息

    • 在導航欄中,前往 "Project Settings" > "Database"
    • 複製 Postgres 的 Connection string (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_URLDIRECT_URL,您可以從 這裡 獲取連接詳細資訊:

      DATABASE_URL="postgres://postgres.[ref]:[password]@aws-0-[region].pooler.supabase.com:6543/postgres"
      
      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

此命令將:

  • 生成遷移文件。
  • 將遷移應用於 Postgres 數據庫。
  • 生成 Prisma 客戶端。

使用 Prisma 客戶端與 Prisma + Postgres 互動

創建一個 script.js 文件以測試數據庫操作。

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

async function main() {
  // 創建一個新作者
  const author = await prisma.author.create({
    data: {
      name: 'Yevgeny Zamyatin',
    },
  });

  // 創建一本新書
  const book = await prisma.book.create({
    data: {
      title: 'We',
      authorId: author.id,
    },
  });

  // 檢索所有書籍及其作者
  const books = await prisma.book.findMany({
    include: { author: true },
  });

  console.log(books);
}

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

運行腳本:

node script.js

您將在控制台上看到一本本書及其相關作者的數組。

結論

恭喜您!您已經設置了 Prisma 與 Postgres。這一設置允許您無縫地與您的 Postgres 數據庫進行交互。


通過遵循本指南,您已經邁出了使用 Prisma 和 Postgres 構建穩健應用程序的第一步。


原文出處:https://dev.to/awalias/prisma-postgres-4o09


共有 0 則留言