面向 NestJS 應用的企業級資料庫

使用 Prisma 開發者友好的資料庫工具構建高效能、型別安全的 NestJS 應用:全球最受歡迎的 TypeScript ORM 和首個無冷啟動的無伺服器資料庫

使用 Prisma 體驗 NestJS

為何選擇 NestJS 和 Prisma?

為高效能 Web 應用而生

Prisma Postgres 基於 unikernels 構建,執行在裸機伺服器上,以實現卓越效能和無限擴充套件性。

無伺服器,無冷啟動

首個提供 按用量付費定價、無需基礎設施管理並具備 零冷啟動 的無伺服器資料庫。

內建全球快取

為任何資料庫查詢新增快取策略,其結果將快取在靠近使用者的位置,以實現卓越效能和使用者體驗。

TypeScript 優先

Prisma ORM 是型別安全 ORM 的先驅。與 NestJS 結合使用,它透過強型別實現高生產力和高置信度。

完美支援依賴注入

Prisma 基於服務的設計天然契合 NestJS 的依賴注入系統,使資料庫訪問可在整個應用程式模組中可用。

活躍的社群

NestJS 和 Prisma 都擁有活躍的社群,您可以在其中獲得支援、參與有趣的活動並結識優秀的開發者。

Prisma Postgres 與 NestJS 如何協同工作

Prisma 的資料庫工具是構建可擴充套件和型別安全的 NestJS 應用程式的完美選擇。無論您是構建 REST 還是 GraphQL API,Prisma 都能與 NestJS 的模組化架構無縫整合。

基本 CRUD

Prisma Postgres 與 NestJS 的依賴注入系統和模組化架構完美整合。透過建立繼承自 PrismaClientPrismaService,您可以在整個應用程式中注入資料庫訪問。

// src/prisma/prisma.service.ts
import { 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 端點和資料庫操作之間建立了清晰的分離。以下是您可以為使用者實現 GETPOST 路由的方式

// src/users/users.controller.ts
import { 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.ts
import { 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 的依賴注入系統和模組化架構完美整合。透過建立繼承自 PrismaClientPrismaService,您可以在整個應用程式中注入資料庫訪問。

// src/prisma/prisma.service.ts
import { 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 端點和資料庫操作之間建立了清晰的分離。以下是您可以為使用者實現 GETPOST 路由的方式

// src/users/users.controller.ts
import { 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.ts
import { 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 社群示例

一個包含在生產環境中用 Prisma 構建 NestJS 所需一切的啟動套件。

在 NestJS 官方文件中學習如何在 NestJS 中使用 Prisma。

這個 npm 庫幫助您在 NestJS 應用程式中整合 Prisma ORM。它的 PrismaModule 提供了對 PrismaService 的訪問,您可以透過依賴注入在控制器、解析器、服務、守衛等中使用它。

一個關於使用 Prisma 構建 NestJS REST API 的綜合教程系列。

一篇深入探討 NestJS 應用程式從 TypeORM 遷移到 Prisma 過程的文章。

加入 Prisma 社群

我們有多個渠道,您可以與社群成員以及 Prisma 團隊互動。

Discord

與社群成員和我們的團隊即時聊天、交流並分享想法。

瞭解更多

GitHub

瀏覽 Prisma 原始碼、傳送反饋並獲取技術問題的答案。

瞭解更多

X

保持更新,與我們的團隊互動,併成為我們活躍線上社群不可或缺的一部分。

瞭解更多

Youtube

保持更新,與我們的團隊互動,併成為我們活躍線上社群不可或缺的一部分。

瞭解更多
© . This site is unofficial and not affiliated with Prisma Data, Inc.