useContext

**

  1. const ctx = useContext()

useContext 可以用于获取当前请求的上下文。

Context 类型可以通过泛型注入,如:

  1. // Koa
  2. import { Context } from '@midwayjs/koa'
  3. const ctx = useContext<Context>()
  4. // FaaS
  5. import { Context } from '@midwayjs/faas'
  6. const ctx = useContext<Context>()

ctx.requestContext

Midway 的 IoC 请求上下文对象,具体文档可以参考:使用依赖注入

ctx.logger

Midway 自带的 Logger 对象

useInject

  1. function useInject<T = any>(identifier: any): Promise<T>;

useInject 是对 Midway IoC 依赖注入功能的封装,用于获取注入的实例,等同于 Class 里使用的 @Inject 装饰器与 使用依赖注入 文档中提到的 getAsync 方法。

示例

  1. import { useInject } from '@midwayjs/hooks'
  2. import { Provide } from '@midwayjs/decorator'
  3. export async function getModel () {
  4. const model = await useInject(Model)
  5. return model.name
  6. }
  7. @Provide()
  8. export class Model {
  9. name = 'model'
  10. }

进一步的文档可以参考:使用依赖注入使用装饰器

useConfig

  1. const config = useConfig('key')

useConfig 可以用于获取业务配置。

业务配置的使用方式可以参考:业务配置

:::warning Midway Hooks 中,相关的函数文件均存放于 /src/apis/ 目录下。因此 config 与 configuration 所在的目录需为 /src/apis/ :::

useLogger

  1. const logger = useLogger()

useLogger 可以获取 logger 并输出日志。

输出日志:

  1. logger.debug();
  2. logger.info();
  3. logger.warn();
  4. logger.error();

usePlugin

用于获取 Egg 插件。

  1. const plugin = usePlugin('pluginName')

Demo:通过 egg-sequelize 查询数据库

  1. import { usePlugin } from '@midwayjs/hooks'
  2. export default async function getUserById(empId: number) {
  3. const sequelize = usePlugin('sequelize');
  4. console.log(sequelize)
  5. }