将数据库洒入 Next.js 和 Vercel 上的静态站点
2022/11/8 23:24:04
本文主要是介绍将数据库洒入 Next.js 和 Vercel 上的静态站点,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
首先,我们将实现 UI。
import { useState } from 'react' import { MdThumbUp } from 'react-icons/md' export default function Component(props) { const [likeCount, setLikeCount] = useState(props.likeCount) const [liked, setLiked] = useState(false) const createLike = async () => { if (liked === false) { // TODO: create like setLikeCount(likeCount + 1) setLiked(true) } } return ( <> <span className={liked ? 'text-blue-500' : undefined}> <span onClick={createLike} className="ml-4 mb-4 align-bottom cursor-pointer inline-block bg-white border-2 border-gray-800 rounded-full px-4"> <MdThumbUp className="inline mr-2" /> {likeCount} </span> </span> <span className="inline-block ml-4 mb-4 align-bottom"> {liked && <span>Thank you!</span>} </span> </> ) }
就数据库而言,TODO: create like
const createLike = async () => { if (liked === false) { // TODO: create like setLikeCount(likeCount + 1) setLiked(true) } }
和。likeCount
const [likeCount, setLikeCount] = useState(props.likeCount)
现在,我们将准备PostgreSQL和Prisma,一个用Node.js制作的ORM。
yarn add prisma
这是架构文件。
喜欢模型非常简单。prisma/schema.prisma
// prisma/schema.prisma generator client { provider = "prisma-client-js" } datasource db { provider = "postgresql" url = env("DATABASE_URL") } model Like { id Int @id @default(autoincrement()) }
我们将生成并安排迁移。
yarn run prisma migrate dev
接下来,我们将生成 prisma 客户端来访问数据库。
yarn run prisma generate
然后,我们将实现实际访问数据库的部分。
如果从页面导出调用(服务器端呈现)的函数,Next.js 将使用返回的数据在每个请求上预呈现此页面。所以,我们喜欢在这里依靠并设置道具。getServerSideProps
getServerSideProps
// pages/index.js import { PrismaClient } from '@prisma/client' const prisma = new PrismaClient() export default function Home(props) { //... } export async function getServerSideProps(context) { const likeCount = await prisma.like.count() return { props: { likeCount: likeCount } } }
然后是喜欢的更新部分。我们将创建后端点以创建类似记录
import { PrismaClient } from '@prisma/client' const prisma = new PrismaClient() export default async function handler(req, res) { const like = await prisma.like.create() res.status(201).json(like) }
并将获取过程添加到回调。
const createLike = async () => { if (liked === false) { fetch('/api/like/create') setLikeCount(likeCount + 1) setLiked(true) } }
实现部分到此结束。
接下来,让我们设置 Vercel 以使用 Prisma 并准备一个 PostgreSQL 服务器。
我在 render.com 有一个PostgreSQL服务器。
这篇关于将数据库洒入 Next.js 和 Vercel 上的静态站点的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-19vue2 开发移动端h5 使用那个ui框架比较好?-icode9专业技术文章分享
- 2024-11-19ReactJS结合TypeScript、Vite、Redux和TanStack (React Query) 实战教程
- 2024-11-19Vue3资料入门教程:零基础快速上手指南
- 2024-11-19Vue3资料:新手入门教程与实战指南
- 2024-11-19Vue资料:新手入门vue.js教程与实践指南
- 2024-11-19Vue资料:初学者入门指南
- 2024-11-18tcpdf可以等待vue动态页面加载完成后再生成pdf吗?-icode9专业技术文章分享
- 2024-11-16Vue3资料:新手入门必读教程
- 2024-11-16Vue3资料:新手入门全面指南
- 2024-11-16Vue资料:新手入门完全指南