内置 Hooks
useContext#
const ctx = useContext();useContext 可以用于获取当前请求的上下文。
Context 类型可以通过泛型注入,如:
// Koaimport { Context } from '@midwayjs/koa';const ctx = useContext<Context>();
// FaaSimport { Context } from '@midwayjs/faas';const ctx = useContext<Context>();ctx.requestContext#
Midway 的 IoC 请求上下文对象,具体文档可以参考:使用依赖注入
ctx.logger#
Midway 自带的 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 可以用于获取业务配置。
业务配置的使用方式可以参考:多环境配置
caution
Midway Hooks 中,相关的函数文件默认存放于 ./src/apis/ 目录下。因此 config 与 configuration 所在的目录需为 ./src/apis/(如修改了 midway.config.ts 的 source 字段,请使用修改后的目录)
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);}