gpt4 book ai didi

javascript - 使用工厂创建 Controller

转载 作者:行者123 更新时间:2023-12-01 01:13:58 24 4
gpt4 key购买 nike

我想知道是否可以使用工厂来初始化 Controller ,然后将其添加到模块中。代码可能看起来像这样,但这不起作用:

const controllerFactory = {
provide: DefinitionController,
useFactory: async (service: DefinitionService) => {
//initialization of controller
return new DefinitionController();
},
inject: [DefinitionService],
};
@Module({
controllers: [controllerFactory],
providers: [DefinitionService],
})
export class DefinitionModule {}

看起来不支持使用 Controller 工厂,但我不确定。有一个例子using factory for providers ,但我在文档或谷歌上找不到 Controller 的任何内容。

最佳答案

无法使用与自定义提供程序相当的异步工厂来定义 Controller 。除非使用 native express/fastify 实例,否则无法添加动态端点/路由:

At the moment there is no way to register a route dynamically except by using the internal HTTP / Fastify / Express instance

有一个issue其中讨论了动态路由模块,但这可能不会很快成为 Nest 的一部分:

At the moment both Kamil and I are really busy, so this issue may take some time - except someone else takes on the task :)

<小时/>

但是您可以使用 OnModuleInit生命周期事件进行静态初始化:

@Injectable()
export class DefinitionController implements OnModuleInit {
onModuleInit() {
console.log(`Initialization...`);
}

当您的应用程序启动并可以访问 Controller 中注入(inject)的提供程序时,它将被调用一次,例如您的DefinitionService

关于javascript - 使用工厂创建 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54926078/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com