NestJS-方法处理程序正在干扰另一个控制器中具有相同名称的另一个处理程序

时间:2019-07-28 19:11:30

标签: typescript nestjs

我有两个控制器,两个不同的文件夹,两个不同的模块,两个都有同一个create名称的方法。

/admin/entity.controller.ts

@Controller("admin")
export class EntityController{
    @Post()
    public async create(@Request() request: any): Promise<List> {
        console.log("request", request) // Logs the Body {"name": "test"} instead of request.
    }
}

/user/entity.ontroller.ts

@Controller("user")
export class EntityController{
    @Post()
    public async create(@Body() entity: Entity) {
        console.log("entity", entity) // logs the body {"name": "test"}
    }
}

当我在两条路线中都张贴以下内容时:{"name": "test"}

碰巧admin create()方法记录了body部分,而不是预期的requests

似乎user控制器的定义正在干扰admin控制器,并使其无法正常工作。

如何避免此问题?这是预期的行为吗?

2 个答案:

答案 0 :(得分:2)

您要覆盖EntityController,具体取决于Nest如何提取依赖项。更改其中一个类的名称。 AdminController UserController之类的

答案 1 :(得分:0)

这实际上是 NestJS 中的 bug,在版本 fixed 中将是 8.0.0

Nest 当前使用类名称来标识提供者/控制器/可注射对象。该修复使用类 references 代替。