为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用来自 JSON 的数据初始化多个 nestjs 提供程序?

如何使用来自 JSON 的数据初始化多个 nestjs 提供程序?

郎朗坤 2022-10-08 17:47:23
我是 NestJS 的新手,正在创建一个应用程序。我的应用程序利用 MVC 架构并具有多个模块,例如Project | +-- App.Controller +-- App.Service +-- App.Module |     +-- SubModule1 |  |   |  +-- SubModule1.Controller |  +-- SubModule1.Service |  +-- SubModule1.Module |     +-- SubModule2 |  |   |  +-- SubModule2.Controller |  +-- SubModule2.Service |  +-- SubModule2.Module | +-- SubModule3 |  |   |  +-- SubModule3.Controller |  +-- SubModule3.Service |  +-- SubModule3.Module现在我的每个子模块服务类都有一个数据成员private member: string[] = []我想用我存储在 json 文件中的一些数据来初始化这些类成员。我的json结构就是这样{    'SubModule1' : [        string1,        string2,        string3,        ...        stringN    ],     'SubModule2' : [        string1,        string2,        string3,        ...        stringN    ],     'SubModule3' : [        string1,        string2,        string3,        ...        stringN    ]}谁能指导我什么是正确的方法?我应该在哪里加载 json 然后注入数据?我最初的想法是利用 app.service 类来加载和注入数据,但我不确定如何访问子模块提供程序。任何指导或帮助将不胜感激。谢谢
查看完整描述

1 回答

?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

为了在应用程序启动期间初始化数据,您可以使用生命周期事件之一,例如OnModuleInit

@Injectable()

export class MyService implements OnModuleInit {

  onModuleInit() {

    await initializeData()

  }

}

如果您想为相同结构的许多提供者重复执行此操作,则可以从初始化器类扩展,如下所示:


abstract class DataInitializer implements OnModuleInit {

  member: string[];

  onModuleInit() {

    const jsonData = // ...

    this.member= jsonData[this.constructor.name];

  }

}


@Injectable()

export class AppService extends DataInitializer {

  // ...


查看完整回答
反对 回复 2022-10-08
  • 1 回答
  • 0 关注
  • 87 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信