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

使用 Prisma 開發者友好的資料庫工具構建高效能、型別安全的 Next.js 應用程式:全球**最流行的 TypeScript ORM** 和**首個無冷啟動的無伺服器資料庫**。

試用 Next.js 與 Prisma

為何選擇 Next.js 和 Prisma

專為高效能 Web 應用打造

Prisma Postgres 基於 unikernels 構建,在裸機伺服器上執行,以實現最高效能和無限可擴充套件性。

無伺服器,無冷啟動

首個無伺服器資料庫,採用按需付費模式,無需基礎設施管理,並且零冷啟動

靈活的資料獲取與渲染

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

內建全球快取

為任何資料庫查詢新增快取策略,其結果將快取在靠近使用者的位置,以實現最佳效能和使用者體驗。

端到端型別安全

將 Prisma 與 Next.js 結合使用,可確保您的應用程式從資料庫到 React 元件都具有一致的型別。

有用的社群

Next.js 和 Prisma 都擁有活躍的社群,您可以在其中找到支援、有趣的活動和優秀的開發者。

Prisma 和 Next.js 如何協同工作

Prisma 的資料庫工具非常適合構建 Next.js 應用程式。它們充當伺服器元件(靜態和動態)、伺服器操作、路由處理程式和獨立服務的資料訪問層。

靜態資料

使用 Prisma 進行靜態站點生成

Next.js 13+ 引入了資料獲取方式的根本性轉變。作為 App Router 預設設定的伺服器元件,允許您直接在元件中獲取資料,無需額外的封裝或特殊函式。這意味著您可以在元件中直接使用 Prisma,並在可能的情況下自動實現靜態生成。

以下是如何實現一個在構建時靜態生成的部落格頁面。資料獲取發生在伺服器端,HTML 在構建過程中生成一次。

// app/blog/[slug]/page.tsx
import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()
// Return a list of `params` to populate the [slug] dynamic segment
export async function generateStaticParams() {
const posts = await prisma.post.findMany()
return posts.map((post) => ({
slug: post.slug,
}))
}
// Multiple versions of this page will be statically generated
// using the `params` returned by `generateStaticParams`
export default async function Page({ params }: { params: { slug: string } }) {
// Fetch the post based on slug
const post = await prisma.post.findUnique({
where: { slug: params.slug },
})
// Simple demo rendering
return (
<div>
<h1>{post?.title || 'Post not found'}</h1>
<p>{post?.content || 'No content available'}</p>
</div>
)
}
動態資料
伺服器操作
API 路由
客戶端元件

使用 Prisma 進行靜態站點生成

Next.js 13+ 引入了資料獲取方式的根本性轉變。作為 App Router 預設設定的伺服器元件,允許您直接在元件中獲取資料,無需額外的封裝或特殊函式。這意味著您可以在元件中直接使用 Prisma,並在可能的情況下自動實現靜態生成。

以下是如何實現一個在構建時靜態生成的部落格頁面。資料獲取發生在伺服器端,HTML 在構建過程中生成一次。

// app/blog/[slug]/page.tsx
import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()
// Return a list of `params` to populate the [slug] dynamic segment
export async function generateStaticParams() {
const posts = await prisma.post.findMany()
return posts.map((post) => ({
slug: post.slug,
}))
}
// Multiple versions of this page will be statically generated
// using the `params` returned by `generateStaticParams`
export default async function Page({ params }: { params: { slug: string } }) {
// Fetch the post based on slug
const post = await prisma.post.findUnique({
where: { slug: params.slug },
})
// Simple demo rendering
return (
<div>
<h1>{post?.title || 'Post not found'}</h1>
<p>{post?.content || 'No content available'}</p>
</div>
)
}

如果您需要在 React 應用程式中使用資料庫,Next.js 和 Prisma 是**終極組合**!🚀

Guillermo Rauch
Guillermo Rauch -
執行長兼創始人
Vercel

精選 Prisma 和 Next.js 社群示例

一個現代 SaaS 應用程式的啟動模板!next-forge 包含了 Next.js 15、認證、資料庫和 ORM、支付、文件、部落格、可觀察性、分析、電子郵件以及更多功能,為您節省了下一個 Next.js SaaS 應用程式的初始樣板程式碼。

學習在 Next.js App Router 中使用 Prisma 的最佳實踐!探索伺服器元件、伺服器操作和邊緣中介軟體,以及高效查詢、處理遷移和部署到 Vercel。完善您的資料庫工作流程並無縫擴充套件!

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

Blitz.js 是一個基於 Next.js 和 Prisma 構建的應用程式框架。它帶回了像 Ruby on Rails 這樣的伺服器渲染框架的簡潔性和約定,同時保留了開發者喜愛 React 和客戶端渲染的所有優點。

這個長達 4 小時的綜合教程將教您如何構建一個全棧表單應用程式。該表單將是響應式的,支援拖放功能,並提供不同型別的佈局欄位,如標題、副標題和段落,以及各種型別的欄位,如文字、數字、下拉選單、日期、複選框和文字區域。

加入 Prisma 社群

我們有多個渠道,您可以在其中與社群成員以及 Prisma 團隊互動。

Discord

與社群成員和我們的團隊即時聊天、交流並分享想法。

瞭解更多

GitHub

瀏覽 Prisma 原始碼,傳送反饋,並獲得技術問題的答案。

瞭解更多

X

獲取最新動態,與我們的團隊互動,併成為我們活躍線上社群不可或缺的一部分。

瞭解更多

Youtube

獲取最新動態,與我們的團隊互動,併成為我們活躍線上社群不可或缺的一部分。

瞭解更多
© . This site is unofficial and not affiliated with Prisma Data, Inc.