useContext
**
const ctx = useContext()
useContext
可以用于获取当前请求的上下文。
Context 类型可以通过泛型注入,如:
// Koa
import { Context } from '@midwayjs/koa'
const ctx = useContext<Context>()
// FaaS
import { Context } from '@midwayjs/faas'
const ctx = useContext<Context>()
ctx.requestContext
Midway 的 IoC 请求上下文对象,具体文档可以参考:使用依赖注入
ctx.logger
useInject
function useInject<T = any>(identifier: any): Promise<T>;
useInject 是对 Midway IoC 依赖注入功能的封装,用于获取注入的实例,等同于 Class 里使用的 @Inject
装饰器与 使用依赖注入 文档中提到的 getAsync
方法。
示例
import { useInject } from '@midwayjs/hooks'
import { Provide } from '@midwayjs/decorator'
export async function getModel () {
const model = await useInject(Model)
return model.name
}
@Provide()
export class Model {
name = 'model'
}
useConfig
const config = useConfig('key')
useConfig 可以用于获取业务配置。
业务配置的使用方式可以参考:业务配置
:::warning
Midway Hooks 中,相关的函数文件均存放于 /src/apis/
目录下。因此 config 与 configuration 所在的目录需为 /src/apis/
:::
useLogger
const logger = useLogger()
useLogger 可以获取 logger 并输出日志。
输出日志:
logger.debug();
logger.info();
logger.warn();
logger.error();
usePlugin
用于获取 Egg 插件。
const plugin = usePlugin('pluginName')
Demo:通过 egg-sequelize 查询数据库
import { usePlugin } from '@midwayjs/hooks'
export default async function getUserById(empId: number) {
const sequelize = usePlugin('sequelize');
console.log(sequelize)
}