你瞅啥呢

2026-05-18 nestjs开发理解:entity定义字段,dto校验逻辑,service写业务,controller管理接口,module用于组装前者内容并导出整个模块

节点 说明
entity 定义字段 定义数据库表结构。Entity 里的每个 @Column() 直接对应数据库的一个列,TypeORM 会根据它自动建表或映射查询结果。
dto 校验逻辑 定义接口的"门禁规则"。客户端发来的数据必须经过 DTO 的装饰器校验(@IsString、@IsEnum 等),不合法就直接拒绝,不会进入 Service。
service 写业务 写核心业务逻辑的地方。判断编码是否重复、拼接查询条件、记录操作日志等,全部在这里。它不关心数据从哪来(HTTP 还是命令行),只专注于业务规则。
controller 管理接口的 对接 HTTP 世界。定义路由(@Post('create'))、提取请求数据(@Body()、@Req())、调用 Service,最后组装统一格式的响应返回给客户端。
module 用于组装前者内容并导出整个模块 模块的"装配车间"。把 Entity、Controller、Service 的依赖关系明确声明出来,决定哪些功能对外暴露(exports),哪些只在内部使用。

数据流向图

以岗位管理模块为例,一次完整的"创建岗位"请求,数据流经这五层是这样的:
image

客户端 POST /posts/create
        ↓
【Module】                           ← 启动时就组装好了依赖关系
        ↓
【Controller】 接收请求
  1. 用对应的 DTO 校验请求体
  2. 从 req.user 提取操作人信息
  3. 调用 Service 的 create 方法
        ↓
【Service】 执行业务逻辑
  1. 检查编码是否重复(查 Entity 对应的表)
  2. 通过 Repository 创建 Entity 实例
  3. 填入 creatorId/updaterId
  4. 保存到数据库
        ↓
     返回数据
        ↓
【Controller】 包装成统一格式
  { code: 200, message: '创建成功', data, ... }
        ↓
     响应给客户端

一句话总结

Entity 管数据库长什么样,DTO 管输入数据怎么校验,Service 管业务怎么做,Controller 管对外暴露什么接口,Module 管它们怎么组装在一起。

posted @ 2026-05-18 14:17  叶乘风  阅读(35)  评论(0)    收藏  举报