我是 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 {
// ...
添加回答
举报
0/150
提交
取消