企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
### 基础概念 当在 Action 里处理用户的请求时,经常要先获取用户提交过来的数据,然后对其校验,如果校验没问题后才能进行后续的操作;当参数校验完成后,有时候还要进行权限判断等,这些都判断无误后才能进行真正的逻辑处理。如果将这些代码都放在一个 Action 里,势必让 Action 的代码非常复杂且冗长。 为了解决这个问题, ThinkJS 在控制器前面增加了一层`Logic`,Logic 里的 Action 和控制器里的 Action 一一对应,系统在调用控制器里的 Action 之前会自动调用 Logic 里的 Action。 ### News控制器的Logic层实现 文件路径:/src/logic/api/portal/news.js ~~~ export default class extends think.Logic { async getDetailAction() { const rules = { id: { int: { min: 1 }, required: true, method: "GET", }, }; const flag = this.validate(rules); if (!flag) { return this.fail("数据格式验证错误", this.validateErrors); } } async getListAction() { const rules = { page: { int: { min: 1 }, required: false, default: 1, method: "GET", }, pageSize: { int: { min: 3, max: 20 }, required: false, default: 10, method: "GET", }, keywords: { // regexp: /\u4e00-\u9fa5a-zA-Z\d/gi, //匹配汉字英文字母和数字 string: true, // 字段类型为 String 类型 required: false, // 字段必填 trim: true, // 字段需要trim处理 method: "GET", }, }; const flag = this.validate(rules); if (!flag) { return this.fail("数据格式验证错误", this.validateErrors); } } } ~~~