如何在 NestJS CLI 中指定要添加控制器的模块?

Posted

技术标签:

【中文标题】如何在 NestJS CLI 中指定要添加控制器的模块?【英文标题】:How To Specify Which Module to add Controller to in NestJS CLI? 【发布时间】:2020-06-13 02:58:29 【问题描述】:

我已经用 NestJS 玩了大约一个星期。到目前为止,我真的很喜欢它。模块系统很棒。而且,我喜欢解析请求之类的事情是多么容易。

我确实有一个关于 NestJS CLI 的问题。

假设我有多个模块。我可以使用以下命令创建控制器。

nest g controller Accounts

如何指定这个控制器属于哪个模块?

CLI 似乎默认为您创建的最后一个模块。

如何改变这种行为?

【问题讨论】:

【参考方案1】:

如果模块已经存在,你可以先给出模块名称,然后是你生成的:

nest g  pr PriceLevel PriceLevel

将在 PriceLevel 模块内生成 PriceLevel 提供者

【讨论】:

【参考方案2】:

据我所知,CLI 将查看您是否有任何与您正在创建的控制器名称匹配的模块。例如,如果你运行

nest g mo accounts
nest g mo contacts
nest g mo leads

然后你对控制器运行相同的操作,但顺序不同,比如

nest g co leads
nest g co accounts
nest g co contacts

您仍然会在AccountsModule 中获得AccountsController,在LeadsModule 中获得LeadsController,在ContactsModule 中获得ContactsController

如果您希望将特定控制器添加到名称与控制器不同的模块(即将LeadsController 添加到AccountsModule),您可以将path 选项作为最终参数传递给CLI例如

nest g co leads accounts

您提供的路径是相对于src(或您的根目录在nest-cli.json 中的任何内容)。这将创建 leads.controller.ts 文件所在的目录 accounts/leads,并将控制器添加到 AccountsModule

Nest 默认将新类添加到同名模块的原因是为了方便功能模块开发。不需要指定模块使 CLI 的使用对开发人员更加友好(通常),并且作为后备,如果找不到模块,CLI 会将其添加到 AppModule (或任何你有调用的根模块)。

【讨论】:

以上是关于如何在 NestJS CLI 中指定要添加控制器的模块?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 中指定要避免的范围

如何在应用脚本高级服务中指定要在 Google DataStudio 中使用的数组字段?

在 Ktor 中指定要序列化为 JSON 的类字段

MySQL 无法在 FROM 多个表连接中指定要更新的目标表

您不能在 FROM 子句中指定要更新的目标表

#1093 - 您不能在 FROM 子句中指定要更新的目标表 [重复]