Контекст
В NocoBase каждый запрос генерирует объект ctx, который является экземпляром Context. Контекст инкапсулирует информацию о запросах и ответах, обеспечивая при этом специфичные для NocoBase функциональные возможн ости, такие как доступ к базе данных, операции кэширования, управление разрешениями, интернационализация и логирование.
Application в NocoBase основан на Koa, поэтому ctx по сути является контекстом Koa. При этом NocoBase расширяет его с помощью API, позволяя разработчикам удобно обрабатывать бизнес-логику в Middleware и действиях. Каждый запрос имеет независимый ctx, что обеспечивает изоляцию данных и безопасность между запросами.
ctx.action
ctx.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 используется для обмена данными в цепочке Middleware
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()и т. д. - Использование
ctxв Middleware и действиях позволяет удобно обрабатывать запросы, ответы, разрешения, логи и базу данных.

