Context 上下文
在 NocoBase 中,每一个请求都会生成一个 ctx 对象,它是 Context 的实例。Context 封装了请求和响应信息,同时提供了 NocoBase 特有的功能——比如数据库访问、缓存操作、权限管理、国际化和日志记录等。
NocoBase 的 Application 基于 Koa 实现,因此 ctx 本质上是 Koa Context,不过 NocoBase 在其基础上扩展了更多 API,让你可以在 Middleware 和 Action 中便捷地处理业务逻辑。每个请求都有独立的 ctx,保证请求之间的数据隔离。
ctx.action
ctx.action 提供当前请求执行的 Action 信息,其中包括:
- ctx.action.params
- ctx.action.actionName
- ctx.action.resourceName
ctx.i18n & ctx.t()
国际化(i18n)支持。
ctx.i18n提供语言环境信息ctx.t()用于根据语言翻译字符串
ctx.db
ctx.db 提供数据库访问接口,可以直接操作模型和执行查询。
ctx.cache
ctx.cache 提供缓存操作,支持读取和写入缓存,常用于加速数据访问或保存临时状态。
ctx.app
ctx.app 是 NocoBase 应用实例,可以访问全局配置、插件和服务。
ctx.auth.user
ctx.auth.user 获取当前已认证的用户信息,适合在权限校验或业务逻辑中使用。
ctx.state.currentRoles
ctx.state 用于在中间件链中共享数据。
ctx.logger
ctx.logger 提供日志记录能力,支持多级别日志输出。
ctx.permission & ctx.can()
ctx.permission 用于权限管理,ctx.can() 用于判断当前用户是否有执行某个操作的权限。
小结
- 每个请求对应一个独立
ctx对象 ctx是 Koa Context 的扩展,整合了 NocoBase 的各项能力- 常用属性包括:
ctx.db、ctx.cache、ctx.auth、ctx.state、ctx.logger、ctx.can()、ctx.t()等 - 在 Middleware 和 Action 中使用
ctx可以方便地操作请求、响应、权限、日志和数据库
相关链接
- Middleware 中间件 — 中间件中使用
ctx处理请求的完整流程 - ResourceManager 资源管理 — 资源 Action 中
ctx.action的来源与定义 - ACL 权限控制 —
ctx.permission和ctx.can()的权限校验机制 - Cache 缓存 —
ctx.cache的缓存操作详细用法 - Logger 日志 —
ctx.logger的日志记录与输出配置 - i18n 国际化 —
ctx.t()和ctx.i18n的国际化支持

