Já jsem se snaží realizovat globální modul v nest.js
Vytvořil jsem služby, jako je níže
export interface ConfigData {
DB_NAME: string;
}
@Injectable()
export class ConfigManager {
private static _instance?: ConfigManager;
public static configData:ConfigData | null;
private constructor() {
console.log(ConfigManager)
if (ConfigManager._instance)
ConfigManager._instance = this;
else{
ConfigManager._instance = new ConfigManager()
ConfigManager.configData = <ConfigData|null><unknown>ConfigManager.fetchSecretData()
}
}
private static async fetchSecretData():Promise<ConfigData|null>{
// some data from db
}
// static get instance() {
// return ConfigManager._instance ?? (ConfigManager._instance = new ConfigManager());
// //return ConfigManager._instance ?? (ConfigManager._instance = ConfigManager.fetchSecretData()) //new ConfigManager());
// }
}
konfigurace.modul.ts
@Global()
@Module({
providers: [ConfigManager],
exports: [ConfigManager],
})
export class ConfigurationModule {}
a v app.modul.ts přidáno ConfigurationModule
v dovozu.
Také přidat vlastní konstruktor na služby nelze to přidat v modulu.ts soubor.
Já jsem očekával, že bych měl být schopen configData
kdekoliv bez importu ConfigManager. ale nefunguje to...
ConfigManager
není k dispozici bez dovozu.