使用 Prisma 在 Fastify 应用程序中从 MySQL、PostgreSQL 和 SQL Server 数据库查询数据 - 适用于 JavaScript 和 TypeScript 的更好的 ORM。
// Creating a new recordawait prisma.user.create({ firstName: “Alice”, email: “alice@prisma.io”})
id firstName email 1 Bobby bobby@tables.io2 Nilufar nilu@email.com3 Jürgen jums@dums.edu4 Alice alice@prisma.io
Prisma ORM 是一款下一代 ORM,用于在 Fastify 服务器中查询您的数据库。您可以将其用作编写纯 SQL 查询、查询构建器(如 knex.js)或传统 ORM(如 TypeORM、MikroORM 和 Sequelize)的替代方案。Prisma ORM 可用于构建 REST 和 GraphQL API,并与微服务和单体架构无缝集成。
您还可以使用我们额外的工具来增强 Prisma ORM 的使用。
• Prisma Accelerate 是一种全局数据库缓存和可扩展连接池,可加速您的数据库查询。
• Prisma Pulse 使您能够以类型安全的方式构建响应式实时应用程序。
Prisma 提供了一个便捷的数据库访问层,它与 Fastify 完美集成。
以下代码演示了在使用 Fastify 构建 API 服务器时使用 Prisma 的各种用法。
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.body17 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.params30 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.params39 const user = await prisma.user.delete({40 where: {41 id,42 },43 })44 res.json(user)45})46
47app.listen(3000)
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.body17 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.params30 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.params39 const user = await prisma.user.delete({40 where: {41 id,42 },43 })44 res.json(user)45})46
47app.listen(3000)
无论您是在构建微服务还是单体应用程序,Prisma 都能完美地融入您的堆栈。
Prisma 提供了数据库查询的自动完成、出色的开发人员体验和完全的类型安全。
Prisma Client 确保完全类型安全的数据库查询,并具有自动完成等优势 - 即使在 JavaScript 中也是如此。
Prisma 的声明式建模语言简单易懂,让您可以直观地描述数据库架构。
从声明式的 Prisma 架构生成可预测且可自定义的 SQL 迁移。
Prisma Client 通过为常见 API 功能(如分页、过滤器等)提供查询来减少样板代码。
探索一些实践,以确保 GraphQL 服务器的可靠运行,以及帮助进行生产故障排除。
一个使用 SQLite 数据库的 REST API 的即用型示例项目
一个使用 PosgreSQL 数据库的 GraphQL API 的即用型示例项目
我们有多个频道,您可以与我们社区成员以及 Prisma 团队互动。