Files
wwjcloud-nest-v1/wwjcloud-nest/src/common/pipes/pipes.module.ts
wanwu 1ed0085d15 feat: WWJCloud 企业级全栈框架 v0.3.5 完整更新
🚀 核心更新:
-  完善 NestJS 企业级架构设计
-  优化配置中心和基础设施层
-  增强第三方服务集成能力
-  完善多租户架构支持
- 🎯 对标 Java Spring Boot 和 PHP ThinkPHP

📦 新增文件:
- wwjcloud-nest 完整框架结构
- Docker 容器化配置
- 管理后台界面
- 数据库迁移脚本

🔑 Key: ebb38b43ec39f355f071294fd1cf9c42
2025-10-13 01:27:37 +08:00

80 lines
2.0 KiB
TypeScript

import { Module, Global } from '@nestjs/common';
import {
ValidationPipe,
ParseIntPipe,
ParseBoolPipe,
ParseArrayPipe,
ParseUUIDPipe,
DefaultValuePipe,
} from '@nestjs/common';
import { ParseDiyFormPipe } from './parse-diy-form.pipe';
/**
* 管道模块 - 基础设施层
* 基于 NestJS 官方内置管道
* 参考: https://docs.nestjs.cn/pipes
* 对应 Java: @InitBinder + @Valid
*
* 统一管理所有验证管道,避免重复定义
*/
@Global()
@Module({
providers: [
// 统一的验证管道配置
{
provide: 'VALIDATION_PIPE',
useValue: new ValidationPipe({
whitelist: true, // 自动过滤掉没有装饰器的属性
forbidNonWhitelisted: true, // 如果有非白名单属性,抛出错误
transform: true, // 自动转换类型
transformOptions: {
enableImplicitConversion: true, // 启用隐式转换
},
validateCustomDecorators: true, // 验证自定义装饰器
exceptionFactory: (errors) => {
// 自定义错误格式
const result = errors.map((error) => ({
property: error.property,
value: error.value,
constraints: error.constraints,
}));
return new Error(JSON.stringify(result));
},
}),
},
{
provide: 'PARSE_INT_PIPE',
useValue: new ParseIntPipe(),
},
{
provide: 'PARSE_BOOL_PIPE',
useValue: new ParseBoolPipe(),
},
{
provide: 'PARSE_ARRAY_PIPE',
useValue: new ParseArrayPipe({ items: String, separator: ',' }),
},
{
provide: 'PARSE_UUID_PIPE',
useValue: new ParseUUIDPipe(),
},
{
provide: 'DEFAULT_VALUE_PIPE',
useValue: new DefaultValuePipe(''),
},
// 业务特定的自定义管道
ParseDiyFormPipe,
],
exports: [
'VALIDATION_PIPE',
'PARSE_INT_PIPE',
'PARSE_BOOL_PIPE',
'PARSE_ARRAY_PIPE',
'PARSE_UUID_PIPE',
'DEFAULT_VALUE_PIPE',
// 业务特定的自定义管道
ParseDiyFormPipe,
],
})
export class PipesModule {}