我创建了一些动态模块(log.module.ts)
@Global()
@Module({})
export class LoggerModule {
public static forRoot(options: WinstonModuleOptions = null): DynamicModule {
const providers = createWinstonProviders(options);
return {
module: LoggerModule,
providers: providers,
exports: providers,
};
}
}
和provider(log.provider.ts)
export function createWinstonProviders(loggerOpts:WinstonModuleOptions): Provider[] {
return [
{
provide: 'logger',
useFactory: () => new LoggerService(loggerOpts),
scope: Scope.TRANSIENT
}];
}
我的问题是,在'LoggerServie'上,我尝试像在documantion中那样获取'REQUEST'对象:https://docs.nestjs.com/fundamentals/injection-scopes,但总是得到undefined ..(log.service.ts)
@Injectable({ scope: Scope.REQUEST })
export class LoggerService {
private readonly logger: any;
constructor(loggerOpts: WinstonModuleOptions = null,
@Inject(REQUEST) private readonly request?: Request) {
this.logger = createLogger({});
}
test(message) {
console.log(this.request)-----> undefined!
return "test";
}
}
我的情况不同于文档,因为我使用new关键字初始化我的服务,并在'useFactory'上将其返回...
感谢您的帮助!
所以,对于任何人,都有类似的问题:问题在于'winston'选项实现。