Context
Trong NocoBase, mỗi request sẽ sinh ra một đối tượng ctx, đây là instance của Context. Context đóng gói thông tin request và response, đồng thời cung cấp các chức năng đặc trưng của NocoBase — ví dụ truy cập database, thao tác cache, quản lý quyền, i18n và ghi log, v.v.
Application của NocoBase được triển khai dựa trên Koa, do đó ctx về bản chất là Koa Context, tuy nhiên NocoBase mở rộng thêm nhiều API trên cơ sở đó, cho phép bạn xử lý logic nghiệp vụ tiện lợi trong Middleware và Action. Mỗi request có ctx độc lập, đảm bảo cách ly dữ liệu giữa các request.
ctx.action
ctx.action cung cấp thông tin Action mà request hiện tại đang thực thi, bao gồm:
- ctx.action.params
- ctx.action.actionName
- ctx.action.resourceName
ctx.i18n & ctx.t()
Hỗ trợ i18n.
ctx.i18ncung cấp thông tin môi trường ngôn ngữctx.t()được dùng để dịch chuỗi theo ngôn ngữ
ctx.db
ctx.db cung cấp interface truy cập database, có thể thao tác model và thực thi truy vấn trực tiếp.
ctx.cache
ctx.cache cung cấp các thao tác cache, hỗ trợ đọc và ghi cache, thường được dùng để tăng tốc truy cập dữ liệu hoặc lưu trạng thái tạm.
ctx.app
ctx.app là instance ứng dụng NocoBase, có thể truy cập cấu hình toàn cục, Plugin và dịch vụ.
ctx.auth.user
ctx.auth.user lấy thông tin người dùng đã được xác thực hiện tại, phù hợp dùng trong xác minh quyền hoặc logic nghiệp vụ.
ctx.state.currentRoles
ctx.state được dùng để chia sẻ dữ liệu trong chuỗi middleware.
ctx.logger
ctx.logger cung cấp khả năng ghi log, hỗ trợ xuất log nhiều cấp độ.
ctx.permission & ctx.can()
ctx.permission được dùng để quản lý quyền, ctx.can() được dùng để đánh giá người dùng hiện tại có quyền thực thi một thao tác nào đó hay không.
Tóm tắt
- Mỗi request tương ứng một đối tượng
ctxđộc lập ctxlà mở rộng của Koa Context, tích hợp các năng lực của NocoBase- Các thuộc tính phổ biến bao gồm:
ctx.db,ctx.cache,ctx.auth,ctx.state,ctx.logger,ctx.can(),ctx.t(), v.v. - Sử dụng
ctxtrong Middleware và Action có thể tiện lợi thao tác request, response, quyền, log và database
Liên kết liên quan
- Middleware — Quy trình hoàn chỉnh sử dụng
ctxtrong middleware để xử lý request - ResourceManager — Nguồn và định nghĩa của
ctx.actiontrong Action của resource - ACL — Cơ chế xác minh quyền của
ctx.permissionvàctx.can() - Cache — Cách dùng chi tiết các thao tác cache của
ctx.cache - Logger — Cấu hình ghi log và xuất log của
ctx.logger - I18n — Hỗ trợ i18n của
ctx.t()vàctx.i18n

