使用 Prisma 开发者友好的数据库工具构建高性能、类型安全的 NestJS 应用:全球最受欢迎的 TypeScript ORM 和首个无冷启动的无服务器数据库。
使用 Prisma 体验 NestJSPrisma Postgres 基于 unikernels 构建,运行在裸机服务器上,以实现卓越性能和无限扩展性。
首个提供 按用量付费定价、无需基础设施管理并具备 零冷启动 的无服务器数据库。
为任何数据库查询添加缓存策略,其结果将缓存在靠近用户的位置,以实现卓越性能和用户体验。
Prisma ORM 是类型安全 ORM 的先驱。与 NestJS 结合使用,它通过强类型实现高生产力和高置信度。
Prisma 基于服务的设计天然契合 NestJS 的依赖注入系统,使数据库访问可在整个应用程序模块中可用。
NestJS 和 Prisma 都拥有活跃的社区,您可以在其中获得支持、参与有趣的活动并结识优秀的开发者。
Prisma Postgres 与 NestJS 的依赖注入系统和模块化架构完美集成。通过创建继承自 PrismaClient
的 PrismaService
,您可以在整个应用程序中注入数据库访问。
// src/prisma/prisma.service.tsimport { Injectable, OnModuleInit, OnModuleDestroy } from '@nestjs/common';import { PrismaClient } from '@prisma/client';@Injectable()export class PrismaService extends PrismaClient implements OnModuleInit, OnModuleDestroy {async onModuleInit() {await this.$connect();}async onModuleDestroy() {await this.$disconnect();}}
NestJS 的控制器/服务模式与 Prisma 的类型安全查询天然匹配,在 API 端点和数据库操作之间创建了清晰的分离。以下是您可以为用户实现 GET
和 POST
路由的方式
// src/users/users.controller.tsimport { Controller, Get, Post, Body } from '@nestjs/common';import { UsersService } from './users.service';@Controller('users')export class UsersController {constructor(private usersService: UsersService) {}@Get()findAll() {return this.usersService.findAll();}@Post()create(@Body() data: { name: string; email: string }) {return this.usersService.create(data);}}
这些路由将按以下方式访问 PrismaService
// src/users/users.service.tsimport { Injectable } from '@nestjs/common';import { PrismaService } from '../prisma/prisma.service';@Injectable()export class UsersService {constructor(private prisma: PrismaService) {}async findAll() {return this.prisma.user.findMany();}async create(data: { name: string; email: string }) {return this.prisma.user.create({data,});}}
Prisma Postgres 与 NestJS 的依赖注入系统和模块化架构完美集成。通过创建继承自 PrismaClient
的 PrismaService
,您可以在整个应用程序中注入数据库访问。
// src/prisma/prisma.service.tsimport { Injectable, OnModuleInit, OnModuleDestroy } from '@nestjs/common';import { PrismaClient } from '@prisma/client';@Injectable()export class PrismaService extends PrismaClient implements OnModuleInit, OnModuleDestroy {async onModuleInit() {await this.$connect();}async onModuleDestroy() {await this.$disconnect();}}
NestJS 的控制器/服务模式与 Prisma 的类型安全查询天然匹配,在 API 端点和数据库操作之间创建了清晰的分离。以下是您可以为用户实现 GET
和 POST
路由的方式
// src/users/users.controller.tsimport { Controller, Get, Post, Body } from '@nestjs/common';import { UsersService } from './users.service';@Controller('users')export class UsersController {constructor(private usersService: UsersService) {}@Get()findAll() {return this.usersService.findAll();}@Post()create(@Body() data: { name: string; email: string }) {return this.usersService.create(data);}}
这些路由将按以下方式访问 PrismaService
// src/users/users.service.tsimport { Injectable } from '@nestjs/common';import { PrismaService } from '../prisma/prisma.service';@Injectable()export class UsersService {constructor(private prisma: PrismaService) {}async findAll() {return this.prisma.user.findMany();}async create(data: { name: string; email: string }) {return this.prisma.user.create({data,});}}
一个包含在生产环境中用 Prisma 构建 NestJS 所需一切的启动套件。
在 NestJS 官方文档中学习如何在 NestJS 中使用 Prisma。
这个 npm 库帮助您在 NestJS 应用程序中集成 Prisma ORM。它的 PrismaModule
提供了对 PrismaService
的访问,您可以通过依赖注入在控制器、解析器、服务、守卫等中使用它。
一个关于使用 Prisma 构建 NestJS REST API 的综合教程系列。
一篇深入探讨 NestJS 应用程序从 TypeORM 迁移到 Prisma 过程的文章。