[英]NestJS. Custom provider, inject can't resolve dependencies of the useFactory
[英]Nestjs - Manually instantiate a class with dependencies on useFactory
假設我有兩個這樣的課程
@Injectable({ scope: Scope.DEFAULT })
class Service {
constructor() {}
// ...
}
@Injectable()
class OtherService {
param: T;
constructor(readonly service: Service, param: T) {}
// ...
}
我正在嘗試使用工廠動態實例化最后一個 class
const otherServiceFactory = {
provide: "TOKEN",
scope: Scope.Request,
useFactory: (req: Request) => {
const param = req.headers["foo"];
return new OtherService(/* ts expects an instance of Service here */ , param)
},
inject: [REQUEST]
}
正如評論所說,在創建實例 ts 時,正確地期望一個Service
實例。 問題是我不想弄亂 DI 樹,所以我不想實例化Service
。 我可以通過稍后設置參數而不是在構造函數中詢問來解決這個問題,所以我不再需要工廠,但感覺非常不理想。 有什么建議么?
謝謝
您可以將Service
添加到inject
數組,並獲取 Nest 創建的Service
實例,然后將其傳遞給OtherService
,以便您擁有創建 class 所需的一切。
const otherServiceFactory = {
provide: "TOKEN",
scope: Scope.Request,
useFactory: (req: Request, service: Service) => {
const param = req.headers["foo"];
return new OtherServiceservice, param)
},
inject: [REQUEST, Service]
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.