轻松、类型安全的数据库访问
Fastify 服务器中

使用 Prisma 在 Fastify 应用程序中查询 MySQL、PostgreSQL 和 SQL Server 数据库——JavaScript 和 TypeScript 的更好 ORM。

tech

Prisma 是什么?

Prisma 提供数据库工具,是构建高性能 Next.js 应用程序并提供出色开发体验的完美伴侣。

ORM

Prisma ORM 是最受欢迎的 TypeScript ORM。它带有可读性强的 Schema、自动化迁移以及直观、完全类型安全的查询 API。

了解更多关于 Prisma ORM 的信息

Postgres

Prisma Postgres 是第一个没有冷启动的无服务器数据库。它基于单核操作系统(unikernels),在裸机上运行,并内置缓存、高性能查询和无缝扩展——所有这些都提供了出色的开发体验。

了解更多关于 Prisma Postgres 的信息

Prisma 和 Fastify 如何协同工作

Prisma ORM 是下一代 ORM,用于在 Fastify 服务器中查询您的数据库。您可以将其作为编写纯 SQL 查询、像 knex.js 这样的查询构建器或像 TypeORM、MikroORM 和 Sequelize 这样的传统 ORM 的替代方案。Prisma ORM 可用于构建 RESTGraphQL API,并且与微服务和单体架构都能流畅集成。

您还可以使用我们的其他工具来增强 Prisma ORM 的使用
Prisma Accelerate 是一个全球数据库缓存和可扩展连接池,可加快您的数据库查询。
Prisma Pulse 使您能够以类型安全的方式构建响应式、实时应用程序。

Prisma 和 Fastify 代码示例

Prisma 提供了一个方便的数据库访问层,与 Fastify 完美集成。

下面的代码演示了在使用 Fastify 构建 API 服务器时 Prisma 的各种用法。

REST API

REST API

Prisma 在您的路由处理程序内部使用,用于在数据库中读写数据。

1import fastify from 'fastify'
2import { PrismaClient } from '@prisma/client'
3
4const prisma = new PrismaClient()
5const app = fastify()
6
7app.get('/feed', async (req, res) => {
8 const posts = await prisma.post.findMany({
9 where: { published: true },
10 include: { author: true },
11 })
12 res.json(posts)
13})
14
15app.post('/post', async (req, res) => {
16 const { title, content, authorEmail } = req.body
17 const post = await prisma.post.create({
18 data: {
19 title,
20 content,
21 published: false,
22 author: { connect: { email: authorEmail } },
23 },
24 })
25 res.json(post)
26})
27
28app.put('/publish/:id', async (req, res) => {
29 const { id } = req.params
30 const post = await prisma.post.update({
31 where: { id },
32 data: { published: true },
33 })
34 res.json(post)
35})
36
37app.delete('/user/:id', async (req, res) => {
38 const { id } = req.params
39 const user = await prisma.user.delete({
40 where: {
41 id,
42 },
43 })
44 res.json(user)
45})
46
47app.listen(3000)
Prisma 在 Fastify 插件中
GraphQL API
Prisma Schema

REST API

Prisma 在您的路由处理程序内部使用,用于在数据库中读写数据。

1import fastify from 'fastify'
2import { PrismaClient } from '@prisma/client'
3
4const prisma = new PrismaClient()
5const app = fastify()
6
7app.get('/feed', async (req, res) => {
8 const posts = await prisma.post.findMany({
9 where: { published: true },
10 include: { author: true },
11 })
12 res.json(posts)
13})
14
15app.post('/post', async (req, res) => {
16 const { title, content, authorEmail } = req.body
17 const post = await prisma.post.create({
18 data: {
19 title,
20 content,
21 published: false,
22 author: { connect: { email: authorEmail } },
23 },
24 })
25 res.json(post)
26})
27
28app.put('/publish/:id', async (req, res) => {
29 const { id } = req.params
30 const post = await prisma.post.update({
31 where: { id },
32 data: { published: true },
33 })
34 res.json(post)
35})
36
37app.delete('/user/:id', async (req, res) => {
38 const { id } = req.params
39 const user = await prisma.user.delete({
40 where: {
41 id,
42 },
43 })
44 res.json(user)
45})
46
47app.listen(3000)

为什么选择 Prisma 和 Fastify?

灵活的架构

无论您是构建微服务还是单体应用程序,Prisma 都能完美融入您的技术栈。

更高的生产力

Prisma 为您的数据库查询提供自动补全功能、出色的开发者体验和完全的类型安全。

类型安全的数据库客户端

Prisma Client 确保完全类型安全的数据库查询,并提供自动补全等优点——即使在 JavaScript 中也是如此。

直观的数据建模

Prisma 的声明式建模语言简单易懂,让您直观地描述数据库 Schema。

轻松的数据库迁移

从声明式 Prisma Schema 生成可预测且可定制的 SQL 迁移。

专为构建 API 设计

Prisma Client 通过为常见 API 功能(例如分页、过滤器等)提供查询,减少了样板代码。

特色 Prisma & Fastify 示例

使用 Fastify、Mercurius 和 Prisma 监控您的 GraphQL API

探索一些实践,以确保 GraphQL 服务器的可靠运行,并帮助进行生产故障排除。

Fastify REST API 入门套件

一个带有 SQLite 数据库的 REST API 的即用型示例项目

Fastify GraphQL API 入门套件

一个带有 PostgreSQL 数据库的 GraphQL API 的即用型示例项目

© . All rights reserved.