Next.js 中使用数据库的最简单方法
使用数据库的最简单方法

使用 Prisma(一个针对 JavaScript 和 TypeScript 的更佳 ORM)在 Next.js 应用中从 MySQL、PostgreSQL 和 SQL Server 数据库查询数据。

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 是终极组合!根据您的需求,您可以在 Next.js API 路由、getServerSidePropsgetStaticProps 中使用 Prisma 查询您的数据库,以实现完全的渲染灵活性并获得最佳性能 🚀”

Guillermo RauchGuillermo Rauch -
首席执行官兼创始人 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 技术栈的全面而实用的深入探讨!

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 小时教程将教你如何构建一个全栈表单应用程序。该表单将具有响应式设计,支持拖放功能,并提供各种布局字段,如标题、副标题和段落,以及各种字段类型,如文本、数字、下拉菜单、日期、复选框和文本区域。