在NestJS控制器中检索多个参数(@Param)提供未定义的值

时间:2019-07-08 15:19:34

标签: javascript node.js typescript express nestjs

当在@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

谢谢。

1 个答案:

答案 0 :(得分:1)

这是因为您的管道|位于顶层,这意味着URL的第一部分或最后一部分被解释。您可以使用this tool检查路径生成的正则表达式:

/^folder\/(?:([^\/]+?))\/(?:(other|doc))\/(?:([^\/]+?))\/file\/(?:([^\/]+?))\/?$/i

相反,您必须在or表达式两边加上括号:

@Controller('folder/:folderId/:type(other|doc)/:docId/')

由此,type是另一个具有两个匹配值的命名参数。它将包含"other""doc"