当在@Param()
装饰器参数和@Controller()
参数中定义了参数时,我很难从NestJS控制器检索参数(controller.ts中的@Get()
装饰器)。>
我是NestJS的新手,所以我可能错过了一些东西,但是谁能向我解释一下如何获得/folder/1/doc/2/file/3
uri并不能给我我想要的所有参数?
此处相关的代码和框:docs
@Controller('folder/:folderId/other|doc/:docId/file/:fileId')
当我打1 2 3
uri时遇到undefined 2 3
时,我期望/folder/1/doc/2/file/3
谢谢。
答案 0 :(得分:1)
这是因为您的管道|
位于顶层,这意味着URL的第一部分或最后一部分被解释。您可以使用this tool检查路径生成的正则表达式:
/^folder\/(?:([^\/]+?))\/(?:(other|doc))\/(?:([^\/]+?))\/file\/(?:([^\/]+?))\/?$/i
相反,您必须在or表达式两边加上括号:
@Controller('folder/:folderId/:type(other|doc)/:docId/')
由此,type
是另一个具有两个匹配值的命名参数。它将包含"other"
或"doc"
。