# nestjs-prisma-base 中文文档

规范地址：https://npmcn.com/package/nestjs-prisma-base/

版本：1\.1\.5
npm 元数据更新时间：2026-11-04T04:16:34.859Z
中文译文更新时间：2026-11-04T06:38:52.605Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/nestjs-prisma-base
原文对照：https://npmcn.com/package/nestjs-prisma-base/?lang=original
项目主页：https://github.com/alperguclu/nestjs-prisma-base#readme
源码仓库：https://github.com/alperguclu/nestjs-prisma-base

弃用说明：Package no longer supported\. Contact Support at https://www\.npmjs\.com/support for more info\.

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：183 kB，60 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：0 个
- peer 依赖：rxjs ^7\.0\.0，@nestjs/core ^8\.0\.0 \|\| ^9\.0\.0 \|\| ^10\.0\.0，@nestjs/common ^8\.0\.0 \|\| ^9\.0\.0 \|\| ^10\.0\.0，@prisma/client ^4\.0\.0 \|\| ^5\.0\.0，@nestjs/swagger ^6\.0\.0 \|\| ^7\.0\.0，class-validator ^0\.13\.0 \|\| ^0\.14\.0，reflect-metadata ^0\.1\.13
- 首次发布：2025-04-05T05:27:40.333Z
- 最新版本发布：2025-06-15T08:02:10.795Z
- 已发布版本数：30（近 12 个月 0 个）

## 中文简介

一个全面的NestJS包，提供基类、实用程序和装饰器，用于构建与Prisma ORM集成的CRUD api，具有分页、搜索、过滤、关系加载、可配置dto和模块化组合功能。

## 安装

```sh
npm install nestjs-prisma-base
```

也可以使用：`pnpm add nestjs-prisma-base`、`yarn add nestjs-prisma-base`、`bun add nestjs-prisma-base`

## README

# 棱镜基地

一个全面的NestJS包，提供基类、实用程序和装饰器，用于与Prisma ORM集成构建CRUD api。

[![npm version](https://badge.fury.io/js/nestjs-prisma-base.svg)](https://badge.fury.io/js/nestjs-prisma-base) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

## 特性

### 🚀 **核心功能**

-   **基础CRUD操作**：现成的控制器和服务
-   **增强的分页**：具有可配置限制的元数据分页
-   **高级搜索和过滤**：带有操作符和排序的多字段搜索
-   **加载的关系**：可配置的嵌套关系包含验证
-   **端点控制**：启用/禁用带有装饰器的特定端点

### 🛠 **DTO系统**

-   **可配置的dto**：全局和类配置
-   **昂首阔步的集成**：自动API文档
-   **最小的dto**：对空基类的最大控制
-   **模块化的组合**：混合和匹配DTO功能与mixins
-   **响应消息**：可选消息字段，用于一致的API反馈 **v1.1.0新增功能**

### ⚡ **开发人员的经验**

-   **模块的工厂**：自动生成完整模块
-   **多数据库支持**：使用多个Prisma客户端
-   **打印稿**完整的类型安全和智能感知支持
-   **验证**内置请求验证和错误处理

## 快速启动

### 安装

```bash
npm install nestjs-prisma-base
```

### 配置（高级特性必备）

**⚠️关键：配置必须在应用程序启动之前导入！**

创建一个配置文件并首先导入 `main.ts`：

**1\. 创建 `src/config/dto-config.ts`：**

```typescript
import { configureDTOs, configureSwaggerDTOs } from 'nestjs-prisma-base';

// Configure DTOs globally
configureDTOs({
  includeTimestamps: true,
  includeId: true,
  includeMessage: true, // Enable response message fields
  messageField: {
    fieldName: 'message',
    defaultValue: 'Operation completed successfully',
    maxLength: 500,
  },
});

// Configure Swagger integration
configureSwaggerDTOs({
  enabled: true,
});
```

**2\. 进口的 `src/main.ts` 第一:**

```typescript
// ⚠️ CRITICAL: This import MUST be first!
import './config/dto-config';

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  await app.listen(3000);
}
bootstrap();
```

### 1\. 设置PrismaModule

```typescript
import { Module } from '@nestjs/common';
import { PrismaModule } from 'nestjs-prisma-base';

@Module({
  imports: [
    PrismaModule.forRoot({
      prismaClient: new PrismaClient(),
    }),
  ],
})
export class AppModule {}
```

### 2\. 创建服务和控制器

```typescript
// user.service.ts
import { Injectable } from '@nestjs/common';
import { BaseService, PrismaService } from 'nestjs-prisma-base';

@Injectable()
export class UserService extends BaseService<User, CreateUserDto, UpdateUserDto> {
  protected readonly modelName = 'user';

  constructor(protected readonly prisma: PrismaService) {
    super(prisma);
  }
}

// user.controller.ts
import { Controller } from '@nestjs/common';
import { BaseController, EnableAllEndpoints } from 'nestjs-prisma-base';

@Controller('users')
@EnableAllEndpoints() // Enables all CRUD endpoints
export class UserController extends BaseController<User, CreateUserDto, UpdateUserDto> {
  constructor(private readonly userService: UserService) {
    super(userService);
  }
}
```

### 3\. 定义dto

```typescript
import { BaseCreateDto, BaseUpdateDto, BaseResponseDto } from 'nestjs-prisma-base';
import { IsEmail, IsString, IsOptional } from 'class-validator';

export class CreateUserDto extends BaseCreateDto {
  @IsString() name: string;
  @IsEmail() email: string;
}

export class UpdateUserDto extends BaseUpdateDto {
  @IsOptional() @IsString() name?: string;
  @IsOptional() @IsEmail() email?: string;
}

export class UserResponseDto extends BaseResponseDto {
  name: string;
  email: string;
  // message field available for API feedback
}
```

**这是它!** 现在，您拥有了一个具有分页、搜索和过滤功能的全功能CRUD API。

## 分页响应

全部 `findAll` 方法返回富分页元数据：

```json
{
  "data": [{ "id": 1, "name": "John", "email": "john@example.com" }],
  "meta": {
    "total": 150,
    "page": 1,
    "limit": 10,
    "totalPages": 15,
    "hasNext": true,
    "hasPrev": false
  }
}
```

## 先进的功能

### 📚 **Swagger与消息字段的集成**

有关Swagger中的自动消息字段文档：

```typescript
import { SwaggerBaseResponseDto, EnableSwaggerBaseFields } from 'nestjs-prisma-base';
import { ApiProperty } from '@nestjs/swagger';

@EnableSwaggerBaseFields // ← Required for automatic base field documentation
export class UserResponseDto extends SwaggerBaseResponseDto {
  @ApiProperty() name: string;
  @ApiProperty() email: string;
  // message, id, createdAt, updatedAt fields automatically documented
}
```

### 🏭 **模块的工厂**

用一个功能生成完整的模块：

```typescript
import { createModelModule, EndpointType } from 'nestjs-prisma-base';

export const UserModule = createModelModule({
  modelName: 'user',
  routePath: 'users',
  enableAllEndpoints: true,
});
```

### 🎨 **DTO配置**

```typescript
import { ConfigurableBaseCreateDto, configureDTOs } from 'nestjs-prisma-base';

// Global configuration (already done above)
export class CreateUserDto extends ConfigurableBaseCreateDto {
  name: string;
  email: string;
  // Automatically includes configured fields
}
```

## 文档

### 📖 **可用的文档**

-   [**完整特性指南**](https://npmcn.com/package/nestjs-prisma-base/docs/features.md) -全面的特性文档和示例
-   [**迁移指南**](https://npmcn.com/package/nestjs-prisma-base/docs/migration.md) —版本升级指导书和兼容性矩阵
-   [**文档索引**](https://npmcn.com/package/nestjs-prisma-base/docs/index.md) -完整的文档概述

### 🚀 **获得更多帮助**

-   **快速的问题**：使用本自述文件中的示例
-   **先进的功能**：检查 [完整特性指南](https://npmcn.com/package/nestjs-prisma-base/docs/features.md)
-   **版本迁移**：参见 [迁移指南](https://npmcn.com/package/nestjs-prisma-base/docs/migration.md)
-   **问题与支持**： [制造问题](https://github.com/your-org/nestjs-prisma-base/issues)

## 版本历史

-   **v1.1.4** 修复了缺少EnableSwaggerBaseFields导出的问题
-   **v1.1.3** 修复了SwaggerBaseResponseDto与@EnableSwaggerBaseFields装饰器的继承
-   **也** 修复了SwaggerBaseResponseDto消息字段文档的问题
-   **v1.1.1** 修复了Swagger循环依赖审计字段混合的问题
-   **v1.1.0** -响应消息字段，用于一致的API反馈
-   **v1.0.0** -模块化DTO组合与混合
-   **v0.9.0** -可配置dto和Swagger集成
-   **v0.8.0** -关联加载和模块工厂
-   **v0.7.0** -带操作符的高级搜索
-   **v0.6.0** —搜索和过滤功能
-   **v0.5.0** -增强元数据分页

## 许可证

麻省理工学院

## 常见问题

### nestjs-prisma-base 是什么？

一个全面的NestJS包，提供基类、实用程序和装饰器，用于构建与Prisma ORM集成的CRUD api，具有分页、搜索、过滤、关系加载、可配置dto和模块化组合功能。注意：该包已被作者标记为弃用——Package no longer supported\. Contact Support at https://www\.npmjs\.com/support for more info\.

### 如何安装 nestjs-prisma-base？

在项目目录运行 npm install nestjs-prisma-base，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：rxjs（^7\.0\.0）、@nestjs/core（^8\.0\.0 \|\| ^9\.0\.0 \|\| ^10\.0\.0）、@nestjs/common（^8\.0\.0 \|\| ^9\.0\.0 \|\| ^10\.0\.0）、@prisma/client（^4\.0\.0 \|\| ^5\.0\.0）、@nestjs/swagger（^6\.0\.0 \|\| ^7\.0\.0）、class-validator（^0\.13\.0 \|\| ^0\.14\.0）、reflect-metadata（^0\.1\.13）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### nestjs-prisma-base 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### nestjs-prisma-base 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### nestjs-prisma-base 可以商用吗？

nestjs-prisma-base 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### nestjs-prisma-base 还在维护吗？

最新版本 1\.1\.5 发布于 2025/06/15（1\.4 年前）；至今共发布 30 个版本，其中过去 12 个月发布了 0 个；首次发布于 2025/04/05。作者已将其标记为弃用，新项目建议寻找替代方案。

