|
|
@@ -126,12 +126,35 @@ avatarFile: z.object({
|
|
|
### 场景2: 多文件关联
|
|
|
如需关联多个文件,请使用 ManyToMany 关联,参考广告实体的实现。
|
|
|
|
|
|
+### 场景3: 通用CRUD路由配置
|
|
|
+对于使用通用CRUD路由的实体,需要配置 `relations` 以自动关联查询文件信息:
|
|
|
+
|
|
|
+```typescript
|
|
|
+// 示例:广告实体的通用CRUD配置
|
|
|
+import { createCrudRoutes } from '@/server/utils/generic-crud.routes';
|
|
|
+import { Advertisement } from '@/server/modules/advertisements/advertisement.entity';
|
|
|
+import { AdvertisementSchema, CreateAdvertisementDto, UpdateAdvertisementDto } from '@/server/modules/advertisements/advertisement.schema';
|
|
|
+import { authMiddleware } from '@/server/middleware/auth.middleware';
|
|
|
+
|
|
|
+const advertisementRoutes = createCrudRoutes({
|
|
|
+ entity: Advertisement,
|
|
|
+ createSchema: CreateAdvertisementDto,
|
|
|
+ updateSchema: UpdateAdvertisementDto,
|
|
|
+ getSchema: AdvertisementSchema,
|
|
|
+ listSchema: AdvertisementSchema,
|
|
|
+ searchFields: ['title', 'code'],
|
|
|
+ relations: ['imageFile'], // 关键配置:自动关联查询图片文件
|
|
|
+ middleware: [authMiddleware]
|
|
|
+});
|
|
|
+```
|
|
|
+
|
|
|
## 注意事项
|
|
|
|
|
|
1. **空值处理**: 字段必须支持 `null`,允许无文件关联
|
|
|
2. **级联操作**: 默认不级联,删除文件不会影响关联实体
|
|
|
3. **文件验证**: 前端需先上传文件获取文件ID,再进行实体关联
|
|
|
4. **类型安全**: 确保所有字段类型定义一致(number | null)
|
|
|
+5. **关联查询**: 配置 `relations` 后,通用CRUD会自动处理关联查询
|
|
|
|
|
|
## 扩展说明
|
|
|
|