用途:为业务逻辑入口点建立执行上下文,让请求级数据(请求者身份、数据库事务、请求元数据、关联 ID、应用模式等)在整条执行链中隐式可访问,替代显式参数传递。是否使用执行上下文属于业务逻辑关注点,基础设施调用方(HTTP 处理器、控制器、Next.js server actions、消息消费者、定时任务)不应知道它的存在,直接调用入口点即可。
主要能力与规则:入口点自己用 runWithinContext(或项目等价物)包裹主体,runWithinContext 负责复用已有上下文或新建,并只承担“让上下文可用”这一职责,不开启数据库事务、不管理隔离级别;事务交由独立的 runWithinTransaction。Node.js 中用 node:async_hooks 的 AsyncLocalStorage,创建单例,用 run() 绑定执行链。需定义带类型的执行上下文,可能缺失的字段标为可空,禁止使用 Map<string, unknown> 等无类型存储。提供 getExecutionContext() 取回上下文,作用域外返回 undefined 而不抛错。内部函数通过 getter 读取,不再显式传参。仓储从上下文取事务,若为空则自建独立事务,使其在事务内外均可工作。
检测流程:定位命令/查询处理器、用例或应用服务;确认入口点是否设置上下文、基础设施调用方是否完全不引用上下文模块;检查上下文类型与可空字段;检查内部函数是否仍显式传请求级数据。
限制:不提供收费、价格、平台或效果信息;具体实现依赖项目既有约定,本资料未给出更多非 Node.js 环境的替代方案。