做网站宿迁,jsp网站建设课程设计,办公空间设计说明300字,网络营销与直播电商专业专升本以下是根据上述每种 provide 取值方式的例子#xff0c;展示在 NestJS 中如何定义和使用自定义 providers。
1. 字符串
在这个例子中#xff0c;我们将使用字符串 MY_SERVICE 作为 provider 的标识符。
首先#xff0c;定义 provider#xff1a;
import { Injectable }…以下是根据上述每种 provide 取值方式的例子展示在 NestJS 中如何定义和使用自定义 providers。
1. 字符串
在这个例子中我们将使用字符串 MY_SERVICE 作为 provider 的标识符。
首先定义 provider
import { Injectable } from nestjs/common;Injectable()
export class MyService {doSomething() {return Doing something!;}
}// 在模块中注册 provider
import { Module } from nestjs/common;Module({providers: [{provide: MY_SERVICE,useClass: MyService,},],
})
export class MyModule {}接着在其他部分的应用中注入这个 provider
import { Injectable, Inject } from nestjs/common;Injectable()
export class SomeOtherService {constructor(Inject(MY_SERVICE) private myService: MyService) {}someMethod() {return this.myService.doSomething();}
}2. 符号Symbol
在这个例子中我们将使用 Symbol 作为 provider 的唯一标识符。
首先创建一个 Symbol
export const MY_SERVICE_TOKEN Symbol(MyService);然后定义 provider
import { Injectable } from nestjs/common;Injectable()
export class MyService {doSomething() {return Doing something!;}
}// 在模块中注册 provider
import { Module } from nestjs/common;
import { MY_SERVICE_TOKEN } from ./constants;Module({providers: [{provide: MY_SERVICE_TOKEN,useClass: MyService,},],
})
export class MyModule {}在其他部分的应用中注入这个 provider
import { Injectable, Inject } from nestjs/common;
import { MY_SERVICE_TOKEN } from ./constants;Injectable()
export class SomeOtherService {constructor(Inject(MY_SERVICE_TOKEN) private myService: MyService) {}someMethod() {return this.myService.doSomething();}
}3. 类型Class
在这个例子中我们将直接使用一个类 MyService 作为 provide 的值。
定义 provider
import { Injectable } from nestjs/common;Injectable()
export class MyService {doSomething() {return Doing something!;}
}// 在模块中注册 provider
import { Module } from nestjs/common;Module({providers: [MyService],
})
export class MyModule {}在其他部分的应用中注入这个 provider
import { Injectable } from nestjs/common;Injectable()
export class SomeOtherService {constructor(private myService: MyService) {}someMethod() {return this.myService.doSomething();}
}4. 已存在的 Provider
在这个例子中我们将创建一个 provider并将其映射到已存在的另一个 provider。
定义原始 provider
import { Injectable } from nestjs/common;Injectable()
export class MyService {doSomething() {return Doing something!;}
}// 在模块中注册 provider
import { Module } from nestjs/common;Module({providers: [MyService],
})
export class MyModule {}然后创建一个映射到 MyService 的新 provider
import { Module } from nestjs/common;Module({providers: [{provide: ALIAS_FOR_MY_SERVICE,useExisting: MyService,},],
})
export class AliasModule {}在其他部分的应用中注入这个新 provider
import { Injectable, Inject } from nestjs/common;Injectable()
export class SomeOtherService {constructor(Inject(ALIAS_FOR_MY_SERVICE) private myService: MyService) {}someMethod() {return this.myService.doSomething();}
}在每个例子中我们演示了如何根据不同的 provide 取值方式定义和使用 NestJS 中的自定义 provider。