在 NestJS 应用中使用 Prisma(一款更优秀的 JavaScript 和 TypeScript ORM)查询来自 MySQL、PostgreSQL & SQL Server 数据库的数据。
// Creating a new recordawait prisma.user.create({firstName: “Alice”,email: “alice@prisma.io”})
id firstName email1 Bobby bobby@tables.io2 Nilufar nilu@email.com3 Jürgen jums@dums.edu4 Alice alice@prisma.io
Prisma ORM 是一款下一代 ORM,可用于在 NestJS 应用中查询数据库。它拥抱 TypeScript 以避免运行时错误并提高生产力。它提供的类型安全远远超出了 TypeORM 或 Sequelize 等传统 ORM 的保证(了解更多)。
Prisma 与 NestJS 的模块化架构无缝集成,无论您是构建 REST 还是 GraphQL API。
您还可以使用我们的附加工具来强化 Prisma ORM 的使用
• Prisma Accelerate 是一款全局数据库缓存和可伸缩连接池,可加快您的数据库查询速度。
• Prisma Pulse 使您能够以类型安全的方式构建响应式、实时应用程序。
将 NestJS 和 Prisma 结合使用提供了新的类型安全级别,这是 Node.js & TypeScript 生态系统中任何其他 ORM 都无法实现的。此示例演示如何使用 Prisma Client
通过实现一个 UserService
类,遵循 NestJS 的模块化架构,通过依赖注入向您的应用程序控制器提供 CRUD 或领域特定的操作。
可以通过扩展生成的 PrismaClient
来实现 PrismaService
类,以便构建与 NestJS 架构集成的 Prisma Client 抽象。它将通过依赖注入提供给其他服务和控制器。
1import { Injectable, OnModuleInit, INestApplication } from '@nestjs/common'2import { PrismaClient } from '@prisma/client'34@Injectable()5export class PrismaService extends PrismaClient6 implements OnModuleInit {78 async onModuleInit() {9 await this.$connect();10 }11}
可以通过扩展生成的 PrismaClient
来实现 PrismaService
类,以便构建与 NestJS 架构集成的 Prisma Client 抽象。它将通过依赖注入提供给其他服务和控制器。
1import { Injectable, OnModuleInit, INestApplication } from '@nestjs/common'2import { PrismaClient } from '@prisma/client'34@Injectable()5export class PrismaService extends PrismaClient6 implements OnModuleInit {78 async onModuleInit() {9 await this.$connect();10 }11}
Prisma 是第一个提供完整类型安全的 ORM,即使在查询部分模型和关系时也是如此。
Prisma 完美契合 NestJS 的模块化架构,并提供强大的数据库访问层。
Prisma Client 确保完全类型安全的数据库查询,并提供自动补全等优势——即使在 JavaScript 中也是如此。
Prisma 的声明式建模语言简单易用,让您可以直观地描述您的数据库模式。
从声明式 Prisma schema 生成可预测且可定制的 SQL 迁移。
Prisma Client 通过为常见的 API 功能(例如分页、过滤等)提供查询来减少样板代码。
一个包含您在生产环境中构建带有 Prisma 的 NestJS 所需的一切的启动工具包。
在官方 NestJS 文档中了解如何在 NestJS 中使用 Prisma。
关于使用 Prisma 构建 NestJS REST API 的全面研讨会和系列教程。
一篇关于将 NestJS 应用从 TypeORM 迁移到 Prisma 过程的深度文章。
我们有多个渠道供您与社区成员和 Prisma 团队互动。