最簡單的工作方式
Next.js 中使用資料庫

在 Next.js 應用程式中使用 Prisma,從 MySQL、PostgreSQL 和 SQL Server 資料庫查詢資料 — 適用於 JavaScript 和 TypeScript 的更佳 ORM。

tech

什麼是 Prisma?

Prisma 讓資料處理變得輕鬆!它提供型別安全的 Node.js 和 TypeScript ORM、全域資料庫快取、連線池和即時資料庫事件。

查詢
// Creating a new record
await prisma.user.create({
firstName: “Alice”,
email: “alice@prisma.io”
})
表格
id firstName email
1 Bobby bobby@tables.io
2 Nilufar nilu@email.com
3 Jürgen jums@dums.edu
4 Alice alice@prisma.io

Prisma 和 Next.js 如何結合

Next.js 模糊了客戶端和伺服器之間的界線。它支援在建置時 (SSG) 或請求時 (SSR) 預先渲染頁面。如果您需要在 Next.js 應用程式中使用資料庫,Prisma 是完美的夥伴。您可以決定是否在建置時 (getStaticProps)、請求時 (getServerSideProps)、使用 API 路由,或完全將後端分離到獨立伺服器中,透過 Prisma 存取您的資料庫。

如果您要將應用程式部署到無伺服器或邊緣環境,請務必查看 Prisma Accelerate 以加速您的資料庫查詢。其可擴展的連線池可確保您的資料庫即使在流量高峰期間也不會耗盡連線。此外,它可以在邊緣快取資料庫查詢的結果,從而縮短回應時間,同時減少資料庫上的負載。

getStaticProps

使用 Prisma 進行靜態網站產生

Next.js 中的 getStaticProps 函式在建置時執行,用於靜態網站產生 (SSG)。它通常用於靜態頁面,例如部落格和行銷網站。您可以在 getStaticProps 內部使用 Prisma 向您的資料庫發送查詢

1// Fetch all posts (in /pages/index.tsx)
2export async function getStaticProps() {
3 const prisma = new PrismaClient()
4 const posts = await prisma.post.findMany()
5
6 return {
7 props : { posts }
8 }
9}

Next.js 會將 props 傳遞給您的 React 組件,從而能夠使用動態資料靜態渲染您的頁面。

1// Display list of posts (in /pages/index.tsx)
2export default ({posts}) =>
3 <ul>
4 {posts.map(post => (
5 <li key={post.id}>{post.title}</li>
6 ))}
7 </ul>
8);
getStaticProps
getServerSideProps
API 路由
獨立伺服器

使用 Prisma 進行靜態網站產生

Next.js 中的 getStaticProps 函式在建置時執行,用於靜態網站產生 (SSG)。它通常用於靜態頁面,例如部落格和行銷網站。您可以在 getStaticProps 內部使用 Prisma 向您的資料庫發送查詢

1// Fetch all posts (in /pages/index.tsx)
2export async function getStaticProps() {
3 const prisma = new PrismaClient()
4 const posts = await prisma.post.findMany()
5
6 return {
7 props : { posts }
8 }
9}

Next.js 會將 props 傳遞給您的 React 組件,從而能夠使用動態資料靜態渲染您的頁面。

1// Display list of posts (in /pages/index.tsx)
2export default ({posts}) =>
3 <ul>
4 {posts.map(post => (
5 <li key={post.id}>{post.title}</li>
6 ))}
7 </ul>
8);
getStaticProps

“如果您需要在 React 應用程式中使用資料庫,Next.js 和 Prisma 是終極組合!根據您的需求,您可以使用 Prisma 在 Next.js API 路由、getServerSidePropsgetStaticProps 中查詢您的資料庫,以獲得完整的渲染靈活性和頂級效能 🚀”

Guillermo RauchGuillermo Rauch -
CEO 和創辦人 of Vercel

為什麼選擇 Prisma 和 Next.js?

完整的渲染靈活性

使用客戶端渲染、伺服器端渲染和靜態網站產生來顯示您的資料。

零時差資料庫查詢

在 getStaticProps 中使用 Prisma 查詢您的資料庫,以產生具有動態資料的靜態頁面。

簡單明瞭的部署

Prisma 驅動的 Next.js 專案可以部署在 Vercel 上,Vercel 是一個為 Next.js 應用程式構建的平台。

端到端型別安全

將 Prisma 與 Next.js 配對可確保您的應用程式從資料庫到 React 組件都具有一致的型別。

架構簡潔性

簡單應用程式的架構複雜性較低 – 隨著應用程式的成長擴展架構。

樂於助人的社群

Next.js 和 Prisma 都有充滿活力的社群,您可以在這裡找到支援、有趣的活動和很棒的人們。

course

使用 T3 Stack 建置即時聊天應用程式

了解如何使用 T3 Stack 建置即時聊天應用程式:Next.js、tRPC、Tailwind、TypeScript 和 Prisma。該影片還包括資料塑模的最佳實務,以及身份驗證和即時更新等功能。這是一個全面且實用的現代 Web Stack 深入探討!

talk

使用 Prisma Accelerate 加速您的應用程式

Prisma Accelerate 是一個連線池和全域快取,可加快您的資料庫查詢速度,尤其是在無伺服器和邊緣環境中。觀看影片以了解它的確切使用方式以及如何在 Next.js 應用程式中開始使用它!

精選的 Prisma 和 Next.js 社群範例

t3 Stack

t3 是一個 Web 開發堆疊,專注於簡潔性、模組化和全堆疊型別安全。它包括 Next.js、tRPC、Tailwind、TypeScript、Prisma 和 NextAuth。

使用 Next.js、Tailwind、tRPC 和 Prisma ORM 建置全堆疊應用程式

由於其廣泛的型別安全保證,Francisco Mendes 在本教學中教授的堆疊是當今構建 Web 應用程式最強大的堆疊之一。透過建立一個有趣的購物清單應用程式,了解具有端到端型別安全性的全堆疊開發。

Blitz.js

Blitz.js 是一個應用程式框架,構建於 Next.js 和 Prisma 之上。它帶回了伺服器渲染框架(如 Ruby on Rails)的簡潔性和慣例,同時保留了開發人員喜歡的 React 和客戶端渲染的所有優點。

CoDox

現代 Web 開發的入門範本!CoDox 隨附 Next.js 13、TypeScript、Tailwind CSS、Shadcn、tRPC、Clerk Auth 以及更多功能,可為您的下一個 Next.js 應用程式節省初始樣板。

全堆疊表單建置器

這個全面的 4 小時教學課程教您如何建置全堆疊表單應用程式。表單將具有響應式、允許拖放功能,並具有不同種類的佈局欄位,例如標題、副標題和段落,以及各種欄位類型,例如文字、數字、下拉選單、日期、複選框和文字區域。