如何在 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 中指定要添加控制器的模块?的主要内容,如果未能解决你的问题,请参考以下文章
如何在应用脚本高级服务中指定要在 Google DataStudio 中使用的数组字段?