Получить несколько параметров (@Param) в контроллере NestJS дает неопределенные значения - PullRequest
1 голос
/ 08 июля 2019

У меня возникают проблемы при получении параметров (@Param() декораторы в controller.ts) из контроллера NestJS, когда они определены в аргументе @Controller() decorator и аргументе @Get().

Я новичок в NestJS, поэтому я мог что-то пропустить, но кто-нибудь может мне объяснить, как получение /folder/1/doc/2/file/3 uri не дает мне все параметры, которые я хочу?

Связанные коды и коробки здесь: https://codesandbox.io/s/nest-typescript-starter-zbvfw?fontsize=14

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

Я ожидаю 1 2 3, когда у меня undefined 2 3 при попадании на /folder/1/doc/2/file/3 uri

Заранее спасибо.

1 Ответ

1 голос
/ 08 июля 2019

Это потому, что ваш or-pipe | находится на верхнем уровне, что означает, что интерпретируется либо первая часть вашего URL, либо последняя.Вы можете проверить регулярное выражение, созданное вашим путем, с помощью этого инструмента :

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

Вместо этого вы должны поставить круглые скобки вокруг выражения или:

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

С помощью этогоtype - еще один именованный параметр с двумя совпадающими значениями.Он будет содержать либо "other", либо "doc".

...