跳至主要內容

將 Prisma Postgres 與 Deno Deploy 整合

15 分鐘

Deno Deploy 包含一項功能,允許您直接在該平台內配置 Prisma Postgres 資料庫。本指南將示範如何透過一個記錄 HTTP 請求到資料庫的最小 Deno 應用程式,將 Prisma Postgres 整合到 Deno Deploy 專案中。

閱讀完本指南後,您將擁有一個已部署的 Deno 應用程式,該程式使用 runtime = "deno" 的 Prisma Client,並可讀寫部署在 Deno Deploy 中的 Prisma Postgres 資料庫。

先決條件

1. 建立並設定新的 Deno 專案

使用 deno init 指令建立一個新的 Deno 專案,這會產生包含主要進入點檔案和設定的基本專案結構。

deno init prisma-postgres-deno-deploy
cd prisma-postgres-deno-deploy

1.1 為 Deno 設定 VS Code

為了確保 VS Code 將此識別為 Deno 專案並提供正確的 TypeScript 驗證,您需要初始化工作區。否則,VS Code 在使用 Deno.serve 等 Deno 特有 API 時會顯示錯誤。

安裝 VS Code 的 Deno 擴充功能,然後

  1. 選擇 View > Command Palette (或在 macOS 上按 Cmd+Shift+P,在 Windows 上按 Ctrl+Shift+P
  2. 執行指令 Deno: Initialize Workspace Configuration

1.2 建立一個基本的 HTTP 伺服器

更新 main.ts 檔案以建立一個簡單的 HTTP 伺服器,回應 "Hello, World!",在增加資料庫功能之前先為您的應用程式建立基礎。

main.ts
function handler(_req: Request): Response {
return new Response("Hello, World!");
}

Deno.serve(handler);

您可以透過執行以下指令在本地測試伺服器

deno run dev

在瀏覽器中訪問 localhost:8000 以查看應用程式運行情況。

1.3 將初始專案推送到 GitHub

為了將您的專案連接到 Deno Deploy 並獲取資料庫連接字串,您需要進行一次成功的部署。請建立一個 GitHub 儲存庫並將您的專案推送至該處。

2. 將專案部署到 Deno Deploy

將您的儲存庫部署到 Deno Deploy。後續的任何提交都會觸發自動重新部署。您現在需要進行部署,因為資料庫字串需要成功的部署才能產生。

  1. 前往 Deno Deploy 儀表板 並選擇 New App
  2. 按照 GitHub 的提示設定 GitHub 應用程式權限
  3. 在 Deno Deploy 介面中選擇您的 GitHub 儲存庫
  4. 點擊 Create App 以完成部署

應用程式將自動部署。

3. 配置 Prisma Postgres 資料庫

在 Deno Deploy 中配置 Prisma Postgres 資料庫,並將其連接到您的應用程式

  1. 前往 Deno Deploy 儀表板中的 Databases 部分
  2. 選擇 Provision Database 並選擇 Prisma Postgres
  3. 完成資料庫配置並確認配置
  4. 點擊 Assign 並選擇您的應用程式
  5. 複製 Production connection string(生產環境連接字串)
  6. 將連接字串加入您的 .env 檔案
DATABASE_URL="postgresql://<username>:<password>@db.prisma.io:5432/<database_name>-production"

4. 設定 Prisma ORM

4.1 啟用環境變數

為了在本地開發期間存取資料庫連接字串,請設定 Deno 使用 --env-file 標誌從您的 .env 檔案載入環境變數。

更新 deno.json 中的 dev 任務

deno.json
{
"tasks": {
"dev": "deno run --watch --env-file main.ts"
}
}

4.2 初始化 Prisma 並建立 schema

安裝 Prisma Client、PostgreSQL 配接器和開發依賴項

deno install npm:@prisma/client npm:@prisma/adapter-pg npm:pg npm:prisma npm:@types/pg

在您的專案中初始化 Prisma,這會建立必要的設定檔和資料夾結構,以定義您的資料庫模型。

npx prisma init

使用這些變更更新 Prisma schema

  1. 將 client 輸出從 prisma-client-js 變更為 prisma-client
  2. 加入 Deno 執行環境設定。(這是 Deno 正常運作所必需的)
  3. 加入用於儲存請求資訊的 Log 模型。
prisma/schema.prisma
generator client {
provider = "prisma-client"
output = "../generated/prisma"
runtime = "deno"
}

datasource db {
provider = "postgresql"
}

model Log {
id Int @id @default(autoincrement())
level Level
message String
meta Json
}

enum Level {
Info
Warn
Error
}

4.3 產生並套用遷移

遷移會根據您的 Prisma schema 建立實際的資料庫表格。此指令會產生 SQL 遷移檔案並對您的資料庫執行它們,從而建立具有指定欄位的 Log 表格。

deno run -A npm:prisma migrate dev --name init
deno run -A npm:prisma generate

5. 更新應用程式以使用 Prisma

現在資料庫已設定完畢,請更新您的應用程式以與其互動。此實作建立了一個記錄系統,可擷取每個 HTTP 請求、將其儲存在資料庫中,並以 JSON 格式回傳該記錄項目。

main.ts
import { PrismaClient } from "./generated/prisma/client.ts";
import { PrismaPg } from "npm:@prisma/adapter-pg";
import process from "node:process";

const adapter = new PrismaPg({
connectionString: process.env.DATABASE_URL,
});

const prisma = new PrismaClient({
adapter,
});

async function handler(request: Request) {
const url = new URL(request.url);
if (url.pathname === "/favicon.ico") {
return new Response(null, { status: 204 });
}

const log = await prisma.log.create({
data: {
level: "Info",
message: `${request.method} ${request.url}`,
meta: {
headers: JSON.stringify(request.headers),
},
},
});
const body = JSON.stringify(log, null, 2);
return new Response(body, {
headers: { "content-type": "application/json; charset=utf-8" },
});
}

Deno.serve(handler);

透過執行以下指令在本地測試應用程式

deno run dev
注意

它可能會要求存取您的環境變數。選擇 Allow 以授予存取權限。

在瀏覽器中訪問 localhost:8000 以查看應用程式運行情況。您應該會看到包含記錄項目的 JSON 回應。

{
"id": 1,
"level": "Info",
"message": "GET https://:8000/",
"meta": {
"headers": "..."
}
}

6. 部署應用程式

建置指令必須產生 Prisma Client 程式碼,以確保它在生產環境中可用。

6.1 在 Deno Deploy 中更新建置指令

  1. 前往 Deno Deploy 中的應用程式並點擊 Settings
  2. Build configuration 下,點擊 Edit 並將 deno run -A npm:prisma generate 加入建置指令
  3. 點擊 Save

6.2 將變更推送到 GitHub

提交並推送您的變更以觸發自動部署

git add .
git commit -m "added prisma"
git push

回到 Deno Deploy,您應該會看到成功的建置。部署完成後,點擊儀表板右上角的部署 URL。

6.3 驗證部署

當您訪問部署後的應用程式時,您應該會看到類似這樣的回應

{
"id": 1,
"level": "Info",
"message": "GET https://prisma-postgres-deno-deploy.<org-name>.deno.net/",
"meta": {
"headers": "{}"
}
}

恭喜!您已完成任務。每次重新整理頁面時,資料庫中都會建立一個新的記錄項目。

後續步驟

現在您已經擁有一個連接到 Prisma Postgres 資料庫的可運作 Deno 應用程式,您可以:

  • 增強資料模型 - 為您的 Prisma schema 加入關係、驗證和索引
  • 保護 API 安全 - 實作身份驗證、速率限制和正確的錯誤處理
  • 改進部署 - 為生產環境設定 CI/CD、監控和資料庫備份

更多資訊


與 Prisma 保持聯繫

透過以下方式與我們聯繫,繼續您的 Prisma 旅程: 我們的活躍社群。保持資訊靈通、參與其中,並與其他開發者合作

我們衷心感謝您的參與,並期待您成為我們社群的一份子!

© . This site is unofficial and not affiliated with Prisma Data, Inc.