Skip to main content

内置 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);}