郎朗坤
2022-10-08 17:47:23
我是 NestJS 的新手,正在創(chuàng)建一個(gè)應(yīng)用程序。我的應(yīng)用程序利用 MVC 架構(gòu)并具有多個(gè)模塊,例如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現(xiàn)在我的每個(gè)子模塊服務(wù)類都有一個(gè)數(shù)據(jù)成員private member: string[] = []我想用我存儲(chǔ)在 json 文件中的一些數(shù)據(jù)來初始化這些類成員。我的json結(jié)構(gòu)就是這樣{ 'SubModule1' : [ string1, string2, string3, ... stringN ], 'SubModule2' : [ string1, string2, string3, ... stringN ], 'SubModule3' : [ string1, string2, string3, ... stringN ]}誰能指導(dǎo)我什么是正確的方法?我應(yīng)該在哪里加載 json 然后注入數(shù)據(jù)?我最初的想法是利用 app.service 類來加載和注入數(shù)據(jù),但我不確定如何訪問子模塊提供程序。任何指導(dǎo)或幫助將不勝感激。謝謝
1 回答

Smart貓小萌
TA貢獻(xiàn)1911條經(jīng)驗(yàn) 獲得超7個(gè)贊
為了在應(yīng)用程序啟動(dòng)期間初始化數(shù)據(jù),您可以使用生命周期事件之一,例如OnModuleInit
:
@Injectable()
export class MyService implements OnModuleInit {
onModuleInit() {
await initializeData()
}
}
如果您想為相同結(jié)構(gòu)的許多提供者重復(fù)執(zhí)行此操作,則可以從初始化器類擴(kuò)展,如下所示:
abstract class DataInitializer implements OnModuleInit {
member: string[];
onModuleInit() {
const jsonData = // ...
this.member= jsonData[this.constructor.name];
}
}
@Injectable()
export class AppService extends DataInitializer {
// ...
添加回答
舉報(bào)
0/150
提交
取消