我是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类来加载和注入数据,但是我不确定如何访问子模块提供程序。
任何指导或帮助将不胜感激。谢谢
答案 0 :(得分:1)
要在应用程序启动期间初始化数据,可以使用lifecycle events之一,例如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 {
// ...