📜  prisma with nextjs (1)

📅  最后修改于: 2023-12-03 15:18:42.269000             🧑  作者: Mango

使用 Prisma 和 Next.js 构建 Web 应用

在今天的 Web 应用开发中,使用 JavaScript 技术栈已经成为主流。而使用 Prisma 和 Next.js 能够 greatly 极大地提高 Web 应用开发的效率和开发体验。

Prisma

Prisma 是一个现代化的 ORM(对象关系映射)和数据库工具,可以用于快速、精准地操作数据库。Prisma 支持多种数据库类型,如 MySQL、PostgreSQL、MongoDB 等,并能让我们在代码层面上更方便地操作数据库。

使用 Prisma 时,需要在项目中安装 prisma@prisma/client 两个 npm 包,并设置 Prisma 配置文件。下面是一个简单的 Prisma 配置文件示例:

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}

generator client {
  provider = "prisma-client-js"
}

在数据库连接成功后,我们可以在项目中通过 @prisma/client 包中生成的库来操作数据库,如下所示:

import { PrismaClient } from '@prisma/client'

const prisma = new PrismaClient()

async function main() {
  // 在这里使用 Prisma 操作数据库
}

main()
  .catch((e) => {
    throw e
  })
  .finally(async () => {
    await prisma.disconnect()
  })

Prisma 官方文档提供了更详细的教程和完整的 API 文档。

Next.js

Next.js 是一个基于 React 的用于构建 SSR(服务器渲染)应用的框架。使用 Next.js 很容易实现构建 SSR 应用,这将大大提高用户的体验,同时还可以获得更好的 SEO(搜索引擎优化)效果。

使用 Next.js 时,只需在项目中安装 nextreact 两个 npm 包,然后在 pages 目录下创建页面,并 export 一个 React 组件,即可实现 SSR 的效果。以下是一个简单的 Next.js 页面示例:

import React from 'react'

function HomePage() {
  return <div>Hello, World!</div>
}

export default HomePage
Prisma 和 Next.js 的应用

结合使用 Prisma 和 Next.js 可以轻松地构建出一个完整的 Web 应用。下面是一个简单的例子,使用 Prisma 操作数据库,并使用 Next.js 实现 SSR 的效果。

安装依赖

首先,在项目目录下先安装需要的依赖:

npm install prisma @prisma/client next react react-dom
配置 Prisma

接下来,按照上文中的方式配置 Prisma,并在代码中导入 Prisma 库:

import { PrismaClient } from '@prisma/client'

const prisma = new PrismaClient()

async function main() {
  // 在这里使用 Prisma 操作数据库
}

main()
  .catch((e) => {
    throw e
  })
  .finally(async () => {
    await prisma.disconnect()
  })
创建 Next.js 页面

pages/index.tsx 文件中创建一个 React 组件,作为应用的默认页面:

import React from 'react'
import { GetServerSideProps } from 'next'
import { PrismaClient } from '@prisma/client'

const prisma = new PrismaClient()

interface Props {
  message: string
}

function HomePage({ message }: Props) {
  return <div>{message}</div>
}

export const getServerSideProps: GetServerSideProps<Props> = async () => {
  const greeting = await prisma.message.findOne({
    where: {
      id: 1,
    },
  })

  return {
    props: {
      message: greeting ? greeting.content : 'Hello, World!',
    },
  }
}

export default HomePage

在这个页面中,使用 getServerSideProps 函数实现了 SSR 的效果,并使用 Prisma 查询了数据库中的数据,渲染成页面显示。

运行应用

最后,在项目目录下运行以下命令,即可启动应用:

npx next dev

打开浏览器,在 http://localhost:3000 上即可看到我们实现的效果。

总结

Prisma 和 Next.js 是两个非常好的工具,结合使用可以 greatly 提高 Web 应用开发的效率和开发体验。希望这篇文章能够帮助你更好地使用这两个工具进行开发。