Nestjs 验证管道中的访问请求对象

Nestjs 验证管道中的访问请求对象,nestjs,Nestjs,我正试图从nestjs中的验证管道中访问请求对象 为了验证某些字段的唯一性,我需要随PUT/PATCH请求提供的ID/UUID参数(在数据结构本身中不可用) 有什么想法吗?目前,在管道中根本无法访问请求对象。如果需要请求,可以使用或 如果您正致力于验证唯一性,那么这听起来更像是业务逻辑的一部分,而不仅仅是其他任何东西,因此我将把它放在一个服务中,并在那里处理对数据库的查询。只要我的两分钱 编辑日期:2020年11月17日 在进一步了解框架作为一个整体的工作方式之后,从技术上讲,可以在管道中获取整

我正试图从
nestjs中的
验证管道中访问
请求对象

为了验证某些字段的唯一性,我需要随
PUT/PATCH
请求提供的
ID/UUID
参数(在数据结构本身中不可用)


有什么想法吗?

目前,在
管道中根本无法访问请求对象。如果需要请求,可以使用或

如果您正致力于验证唯一性,那么这听起来更像是业务逻辑的一部分,而不仅仅是其他任何东西,因此我将把它放在一个服务中,并在那里处理对数据库的查询。只要我的两分钱

编辑日期:2020年11月17日 在进一步了解框架作为一个整体的工作方式之后,从技术上讲,可以在管道中获取整个请求对象。有两种方法

  • 将管道
    @Injectable({scope:scope.REQUEST})
    设置为可注入。这将在每次请求时创建一个新管道,但是,嘿,如果这是你喜欢的,那就太好了

  • 制作一个定制装饰器,使其完全进入管道。请注意,如果在类或方法级别全局绑定,
    ValidationPipe
    的工作方式可能会受到影响


  • 你试过自定义装饰器吗?我不明白它是如何相关的,你能详细说明一下吗?是的,但它缺少所有类验证器的功能,拦截器不是转换接收到的数据的解决方案。正如我所说,不可能在管道中获取请求。有很多方法可以解决这个问题,比如
    异步钩子
    ,但我不知道如何实现。这也可能导致性能下降,因此请谨慎使用,并确保按照该路线测试差异