次世代且完全型別安全的 NestJS ORM

在 NestJS 應用程式中使用 Prisma 從 MySQL、PostgreSQL 和 SQL Server 資料庫查詢資料 – 適用於 JavaScript 和 TypeScript 的更佳 ORM。

tech

什麼是 Prisma?

Prisma 使資料處理變得輕鬆!它提供型別安全的 Node.js 和 TypeScript ORM、全域資料庫快取、連線池和即時資料庫事件。

查詢
// Creating a new record
await prisma.user.create({
firstName: “Alice”,
email: “alice@prisma.io”
})
表格
id firstName email
1 Bobby bobby@tables.io
2 Nilufar nilu@email.com
3 Jürgen jums@dums.edu
4 Alice alice@prisma.io

Prisma 和 NestJS 如何協同運作

Prisma ORM 是次世代 ORM,可用於在 NestJS 應用程式中查詢資料庫。它採用 TypeScript 以避免執行階段錯誤並提高生產力。它提供的型別安全遠遠超出 TypeORM 或 Sequelize 等傳統 ORM 的保證 (瞭解更多)。
無論您是建構 REST 或 GraphQL API,Prisma 都能與 NestJS 的模組化架構順暢整合。

您還可以透過我們的其他工具來增強 Prisma ORM 的使用
Prisma Accelerate 是一個全域資料庫快取和可擴展的連線池,可加速您的資料庫查詢。
Prisma Pulse 使您能夠以型別安全的方式建構反應式即時應用程式。

Prisma 和 NestJS 程式碼範例

結合 NestJS 和 Prisma 提供了全新層級的型別安全,這是 Node.js 和 TypeScript 生態系統中任何其他 ORM 都無法實現的。此範例示範如何使用 Prisma Client

透過實作 UserService 類別,遵循 NestJS 的模組化架構經由依賴注入,該類別將為您的應用程式控制器提供 CRUD 或特定領域的操作。

PrismaService

PrismaService

可以透過擴展產生的 PrismaClient 來實作 PrismaService 類別,以便建構 Prisma Client 的抽象層,使其與您的 NestJS 架構整合。它將透過依賴注入提供給其他服務和控制器。

1import { Injectable, OnModuleInit, INestApplication } from '@nestjs/common'
2import { PrismaClient } from '@prisma/client'
3
4@Injectable()
5export class PrismaService extends PrismaClient
6 implements OnModuleInit {
7
8 async onModuleInit() {
9 await this.$connect();
10 }
11}
AppController
Prisma schema

PrismaService

可以透過擴展產生的 PrismaClient 來實作 PrismaService 類別,以便建構 Prisma Client 的抽象層,使其與您的 NestJS 架構整合。它將透過依賴注入提供給其他服務和控制器。

1import { Injectable, OnModuleInit, INestApplication } from '@nestjs/common'
2import { PrismaClient } from '@prisma/client'
3
4@Injectable()
5export class PrismaService extends PrismaClient
6 implements OnModuleInit {
7
8 async onModuleInit() {
9 await this.$connect();
10 }
11}

為什麼選擇 Prisma 和 NestJS?

擁抱 TypeScript

Prisma 是第一個提供完整型別安全的 ORM,即使在查詢部分模型和關聯時也是如此。

順暢整合

Prisma 完美地融入 NestJS 的模組化架構,並提供強大的資料庫存取層。

型別安全的資料庫用戶端

Prisma Client 確保完全型別安全的資料庫查詢,並具有自動完成等優點 - 即使在 JavaScript 中也是如此。

直覺的資料塑模

Prisma 的宣告式塑模語言簡單易懂,可讓您直覺地描述資料庫結構描述。

輕鬆的資料庫遷移

從宣告式 Prisma 結構描述產生可預測且可自訂的 SQL 遷移。

專為建構 API 而設計

Prisma Client 透過為常見 API 功能 (例如分頁、篩選等) 提供查詢來減少樣板程式碼。

精選的 Prisma 和 NestJS 社群範例

適用於生產環境的 NestJS 和 Prisma 入門套件

一個入門套件,涵蓋在生產環境中使用 NestJS 和 Prisma 建構應用程式所需的一切。

NestJS 文件中的 Prisma

在官方 NestJS 文件中瞭解如何將 Prisma 與 NestJS 搭配使用。

使用 NestJS 和 Prisma 建構 REST API

關於使用 Prisma 建構 NestJS REST API 的綜合研討會和系列文章。

將大型生產應用程式從 TypeORM 遷移到 Prisma

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