# use pnpm
$ pnpm install egg-plugin-context
# use npm
$ npm install egg-plugin-context --save
# use yarn
$ yarn add egg-plugin-context
Enable context plugin
// {app_root}/config/plugin.js
exports.withContext = {
enable: true,
package: 'egg-plugin-context'
}
// {app_root}/router.js
module.exports = app => {
const { router, controller, middleware } = app
router.post('/api/test', middleware.withContext({ token: 100 }), controller.test)
}
// ctx.context.token === 100
// {app_root}/router.js
module.exports = app => {
const { router, controller, middleware } = app
router.post(
'/api/test',
middleware.withContext(ctx => ({ test: 100 })),
controller.test
)
}
// ctx.context.test === 100
// {app_root}/router.js
module.exports = app => {
const { router, controller, middleware } = app
router.post(
'/api/test',
middleware.withContext(async ctx => Promise.resolve({ test: 100 })),
controller.test
)
}
// ctx.context.test === 100
The contextName determines where to get the Context, like: ctx.context
// {app_root}/router.js
module.exports = app => {
const { router, controller, middleware } = app
router.post(
'/api/test',
middleware.withContext({ token: 100 }, { contextName: 'contextData' }),
controller.test
)
}
// ctx.contextData.token === 100
Please open an issue here.