# 新框架 ## 不在通过npm发布,直接拉取项目直接用.这样方便各个项目修改对框架的需求 ## 1.不再使用中间件做返回处理,使用静态类处理: ``` RF => ResponseFormat ``` ``` RF.success(data?:any): return { errcode: '0', errmsg: 'ok', data, } ``` ``` RF.error(e?:string): return { errcode: '400', errmsg: e || '服务发生错误', } ``` ## 2.controller的interface,负责验证参数部分,有需要自己写 ``` export class XXXDTO { @ApiProperty({ description: "xxx" }) // (swagger参数说明) @Rule(RuleType['${dataType}']().${methodName}()) // dataType:数据类型; methodName:判断方法 [${columnName}]: ${dataType} = undefined; // columnName:接收的字段名; dataType:数据类型; = undefined 可写可不写; } ``` ## 3.异常类ServiceError和异常过滤器ServiceError 重写 现在声明异常为以下方式即可使用 ``` export const ErrorCode = { UNKNOW: { code: '-1', msg: '未知错误' }, NOT_LOGIN: { code: '401', msg: '未登录' }, }; ``` 使用方式: ``` throw new ServiceError(ErrorCode.UNKNOW) ``` ## 4.重写查询条件处理,单独生成函数.默认在自定义Query中使用 ### 新增两个参数注解: #### 1.Query: @Query(mapping?:object): object 重做了下Query注解: 新Query注解中, 自动过滤掉skip和limit; 剩下的查询条件根据key的符号.由QueryUtils.QueryReset函数处理. mapping为字段映射,{ ${接收字段}: ${映射为的字段} } #### 2.Page: @Page():object 提取分页对象的注解,里面有skip和limit两个参数 ## 5.checkToken中间件重写,根据config.passToken:Array 中的路由设置判断 ``` useCheckTokenMiddleware: true, //启用checkToken中间件 passToken: [], //写Get/Post/Delete注解的路径,遇到这些路径时,checkToken处理token,但是跳过检查 tokenKey: 'token' // 请求头中的token的key名,默认为token ``` ## 6.框架自带上传,下载;可以设置文件位置,默认在项目根目录下: 原upload插件改为busboy,所以设置也得改成busboy ``` busboy:{ mode:'file' // 默认,基本不用改 realdir: 'upload' // 真实路径,默认是项目根目录的upload文件夹下 whitelist: null,//默认不限制,如果要限制,就到midwayjs官网看下咋写 columns: [] // 涉及文件的字段:${model的class名}.${字段名}.清除不用的文件时就根据这里设置的去清除,没写进去的都会被删掉 } ``` ## 7.登录检查不再使用redis,而是通过数据库直接检查