Nest.js 中如何使用 @Inject 装饰器?

推荐答案

在 Nest.js 中,@Inject 装饰器用于手动注入依赖项。它通常用于注入非类依赖项(如字符串、函数、对象等)或当自动注入无法满足需求时。以下是一个使用 @Inject 装饰器的示例:

-- -------------------- ---- -------
------ - ----------- ------ - ---- -----------------

-------------
------ ----- --------- -
  ------------
    ------------------------- ------- -------- -------------- ----
  - --

  ----------- -
    ------ -------------------
  -
-

在这个示例中,@Inject('CONFIG_OPTIONS') 用于手动注入一个名为 CONFIG_OPTIONS 的依赖项。这个依赖项可以是一个字符串、对象或其他非类依赖。

本题详细解读

1. @Inject 装饰器的作用

@Inject 装饰器用于手动指定依赖项的注入。它通常用于以下场景:

  • 注入非类依赖项(如字符串、函数、对象等)。
  • 当自动注入无法满足需求时,手动指定依赖项。

2. 使用 @Inject 装饰器的步骤

  1. 定义依赖项:首先,需要在模块中定义依赖项。例如,使用 useValueuseFactory 提供依赖项。

    -- -------------------- ---- -------
    ------ - ------ - ---- -----------------
    ------ - --------- - ---- ---------------
    
    ---------
      ---------- -
        -
          -------- -----------------
          --------- - ------- -------- -------- ---- --
        --
        ----------
      --
    --
    ------ ----- -------- --
  2. 在服务中使用 @Inject 装饰器:在服务的构造函数中使用 @Inject 装饰器来注入依赖项。

    -- -------------------- ---- -------
    ------ - ----------- ------ - ---- -----------------
    
    -------------
    ------ ----- --------- -
      ------------
        ------------------------- ------- -------- -------------- ----
      - --
    
      ----------- -
        ------ -------------------
      -
    -

3. 注意事项

  • @Inject 装饰器的参数是一个字符串或符号(Symbol),用于标识依赖项。
  • 依赖项的类型可以是任何类型,包括基本类型、对象、函数等。
  • 如果依赖项是一个类,通常不需要使用 @Inject 装饰器,Nest.js 会自动注入。

通过以上步骤,你可以在 Nest.js 中灵活地使用 @Inject 装饰器来手动注入依赖项。

纠错
反馈