我們很高興地宣佈,對邊緣函式的支援已進入預覽階段!您現在可以透過Vercel邊緣函式、Vercel邊緣中介軟體、Cloudflare Workers和Cloudflare Pages,使用Prisma ORM訪問您的資料庫。立即試用!
什麼是邊緣函式?
邊緣函式是一種輕量級的無伺服器計算形式,分佈在全球各地。它們允許您將應用程式部署並執行在儘可能靠近終端使用者的位置。

邊緣函式可以使您的應用更快
得益於邊緣函式的地理分散式特性,使用者與資料中心之間的距離得以縮短。這降低了請求延遲並改善了響應時間,使邊緣函式成為提升應用效能並顯著改善使用者體驗的絕佳方法。
邊緣函式中的技術限制
Vercel邊緣函式和Cloudflare Workers不使用標準的Node.js執行時。相反,它們是在V8隔離環境中執行程式碼。因此,這些邊緣函式只能訪問標準Node.js API的一個小子集,並且計算資源(CPU和記憶體)也受到限制。
特別是,無法自由開啟TCP連線的限制使得從邊緣函式與傳統資料庫通訊變得困難。雖然Cloudflare引入了一個connect() API,實現了有限的TCP連線,但這仍然只能透過與該API相容的特定資料庫驅動程式進行資料庫訪問。
注意: 在Node.js生態系統中,與Cloudflare Workers相容的最受歡迎的傳統資料庫驅動程式是用於PostgreSQL的
node-postgres。然而,目前也正在進行工作,以使node-mysql2驅動程式中的MySQL相容Cloudflare Workers。
現代資料庫提供商,例如Neon或PlanetScale,透過釋出透過HTTP與資料庫通訊的無伺服器驅動程式來規避這一限制。
使用Prisma ORM在邊緣函式中訪問資料庫 🎉
儘管在早期版本中可以在邊緣函式中使用Prisma ORM,但這始終需要使用Prisma Accelerate作為邊緣函式和資料庫之間的代理。

由於上述技術限制,無法“直接”將帶有Prisma ORM的應用程式部署到邊緣。
- 資料庫訪問僅適用於特定驅動程式(無論是無伺服器驅動程式還是與Cloudflare的
connect()相容的驅動程式)。這裡的問題是Prisma ORM過去只在其查詢引擎中內建驅動程式,因此無法使用相容的Node.js驅動程式。 - 上傳到邊緣函式的應用程式包大小限制使得使用Prisma ORM變得不可能,因為其查詢引擎過大,超出了大小限制。
- 邊緣函式只允許訪問有限的Node.js API。然而,Prisma Client需要其中一些API才能工作,因此無法訪問這些API需要Prisma Client繞過一些限制。

我們很高興地宣佈,v5.11.0 版本釋出
解除了這些限制,並支援在邊緣函式中執行Prisma ORM(預覽版)🎉

得益於最近引入的驅動程式介面卡預覽功能,開發者現在可以將Prisma ORM與他們喜愛的Node.js生態系統中的資料庫驅動程式一起使用!
此外,我們已經能夠大幅減小Prisma ORM查詢引擎的大小,使其現在可以適應邊緣函式有限的執行時環境。
如何在邊緣函式中使用Prisma ORM
🔬 如果您有興趣檢視實際示例,我們整理了一個小型的GitHub倉庫,演示如何使用Prisma ORM和Vercel邊緣函式訪問您的資料庫。
請按照以下步驟學習如何在Cloudflare Worker中使用PlanetScale資料庫來啟動並執行Prisma ORM(或檢視我們的文件以使用不同的邊緣部署和資料庫提供商組合)。
0. 前提條件
在執行以下步驟之前,請確保您已具備
- 您的機器上已安裝Node.js
- 一個Cloudflare賬戶
- 一個正在執行的PlanetScale例項及其可用的連線字串
1. 設定您的應用程式
使用create-cloudflare-cli初始化您的專案,並按照CLI嚮導中的步驟操作,選擇提示的預設選項
2. 設定Prisma
進入新目錄並安裝Prisma CLI
接下來,使用以下命令在您的專案中初始化Prisma
上述命令
- 在
prisma/schema.prisma中建立了Prisma schema檔案 - 建立了一個
.env檔案來儲存環境變數
該.env檔案包含一個佔位符DATABASE_URL環境變數。
使用連線到您的PlanetScale資料庫的實際連線字串更新該值。它可能看起來像這樣
注意: 上述連線字串使用了資料庫的使用者名稱、密碼和名稱的佔位符。請務必將它們替換為您自己資料庫的值。
更新您的Prisma schema如下所示
上述Prisma schema
- 啟用了
driverAdapters預覽功能標誌 - 定義了一個
Log模型和Level列舉
要將您的資料模型對映到資料庫,您需要使用prisma db push CLI 命令
這在您的資料庫中建立了一個新的Log表,您現在可以在PlanetScale儀表板中檢視。
3. 編寫Cloudflare Worker函式
在您的wrangler.toml檔案中,新增一個[vars]鍵和您的資料庫連線字串(像之前一樣,用您自己的PlanetScale例項的值替換USERNAME、PASSWORD和DATABASE的佔位符)
注意: 由於這是一個演示應用,我們將純連線字串新增到
wrangler.toml中。然而,由於此檔案通常會被提交到版本控制,您在生產環境中絕不應這樣做,因為它會公開您的資料庫連線。相反,請使用Cloudflare的secrets配置。
接下來,安裝PlanetScale無伺服器資料庫驅動程式及其驅動程式介面卡
使用以下程式碼更新src/index.ts檔案中的示例Cloudflare Worker程式碼片段
啟動應用程式
從終端輸出中,您現在可以開啟指向localhost的URL,或按下b鍵開啟瀏覽器並呼叫Worker函式。
如果一切順利,您將看到類似於以下的輸出
4. 釋出到Cloudflare Workers
您現在可以透過執行以下命令部署應用程式
此命令會將您的邊緣函式部署到Cloudflare,並輸出可以訪問它的URL。
試用並分享您的反饋
我們很想聽聽您的想法!請嘗試使用Vercel或Cloudflare進行邊緣部署的新支援,並透過Twitter或Discord與我們分享您的反饋🚀
如果您遇到任何問題,可以在此處建立錯誤報告。
不要錯過下一篇文章!
訂閱Prisma新聞通訊