【发布时间】:2020-08-30 21:32:06
【问题描述】:
我是nestJS 中的新手,所以如果我的问题在文档中得到解决,您可以直接向我提出问题,但我不知道如何创建不可注入类的实例。 这是代码的简化版本
export default class BoardingPass {
constructor(
orderId: string,
companyIATa: string,
token: string,
private readonly checkinOrder = new CheckinOrder(orderId, companyIATa, token) // <-- i need to instantiate CheckinOrder
) {}
}
所以我需要实例化 CheckinOrder 类,但它需要 ApolloClient,它只能通过 nestJS DI 机制提供
export default class CheckinOrder implements ICheckinOrder {
private order: CheckinOrderObject;
constructor(
private readonly id: string,
private readonly carrierIATACode: string,
private readonly accessToken: string,
private readonly apolloClient: ApolloClient<NormalizedCacheObject> // can't figure out how to pass it via DI
) {}
}
更新
阅读自定义提供程序,这似乎是我需要的,但正如您所见,有一些动态参数传递给 CheckinOrder 的 init 方法
const checkinOrderProvider: Provider<CheckinOrder> = {
useFactory: apolloClient => new CheckinOrder('1', '2', '3', apolloClient),
provide: CheckinOrder,
inject: [ApolloClient]
};
@Module({
imports: [ConfigModule.forRoot(), ApolloClientModule],
providers: [checkinOrderProvider],
exports: [checkinOrderProvider]
})
export class GooglePayModule {}
而且只有 Apollo 客户端是静态的,所以当登机牌类有 CheckinOrder 类的实例作为属性时,如何实现常规接口组合仍然不清楚:(
【问题讨论】:
-
CheckinOrder的动态值是如何确定的?
标签: nestjs