使用 Prisma(一个更好的 JavaScript 和 TypeScript ORM)在 NestJS 应用程序中查询来自 MySQL、PostgreSQL 和 SQL Server 数据库的数据。
// 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,可用于在 NestJS 应用程序中查询数据库。它采用 TypeScript 来避免运行时错误并提高生产力。它提供的类型安全性远远超出了传统 ORM(如 TypeORM 或 Sequelize)的保证(了解更多)。
Prisma 与 NestJS 的模块化架构无缝集成,无论您是构建 REST 还是 GraphQL API。
您还可以使用我们的附加工具增强 Prisma ORM 的使用
• Prisma Accelerate 是一个全球数据库缓存和可扩展连接池,可以加快您的数据库查询速度。
• Prisma Pulse 使您能够以类型安全的方式构建响应式实时应用程序。
将 NestJS 和 Prisma 结合使用可提供一个新的类型安全性级别,这是 Node.js & TypeScript 生态系统中的任何其他 ORM 都无法实现的。此示例演示了如何使用 Prisma Client
通过依赖注入实现 UserService
类,该类将为您的应用程序控制器提供 CRUD 或特定于域的操作,从而遵循 NestJS 的模块化架构。
可以通过扩展生成的 PrismaClient
来实现 PrismaService
类,以便构建一个与 NestJS 架构集成的 Prisma Client 抽象。它将通过依赖注入提供给其他服务和控制器。
1import { Injectable, OnModuleInit, INestApplication } from '@nestjs/common'2import { PrismaClient } from '@prisma/client'3
4@Injectable()5export class PrismaService extends PrismaClient6 implements OnModuleInit {7
8 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'3
4@Injectable()5export class PrismaService extends PrismaClient6 implements OnModuleInit {7
8 async onModuleInit() {9 await this.$connect();10 }11}
Prisma 是第一个提供完全类型安全性的 ORM,即使在查询部分模型和关系时也是如此。
Prisma 完美地融入 NestJS 的模块化架构,并提供了一个强大的数据库访问层。
Prisma Client 确保完全类型安全的数据库查询,并具有自动完成功能等优势,即使在 JavaScript 中也是如此。
Prisma 的声明式建模语言简单易用,让您可以直观地描述数据库模式。
从声明式的 Prisma 模式生成可预测且可定制的 SQL 迁移。
Prisma Client 通过为常见 API 功能(例如分页、过滤器等)提供查询来减少样板代码。
一个启动套件,涵盖了在生产环境中使用 Prisma 构建 NestJS 所需的一切。
了解如何在官方 NestJS 文档中将 Prisma 与 NestJS 结合使用。
关于使用 Prisma 构建 NestJS REST API 的综合研讨会和系列。
一篇关于将 NestJS 应用程序从 TypeORM 迁移到 Prisma 的迁移过程的深入文章。
我们有多个渠道,您可以通过这些渠道与社区成员以及 Prisma 团队互动。