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

gal*_*gal 6 nestjs

Request object我正在尝试从Validation Pipein中访问nestjs

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

任何想法?

Jay*_*iel 3

目前,根本不可能在pipe. 如果您需要该请求,您可以使用守卫拦截器

如果您正在努力验证唯一性,这听起来像是业务逻辑的一部分,而不是其他任何东西,所以我会将其放入服务中并在那里处理对数据库的查询。只是我的两分钱。

编辑 2020 年 11 月 17 日

在详细了解框架如何作为一个整体工作之后,从技术上讲,可以在管道中获取整个请求对象。有两种方法可以解决这个问题。

  1. 使管道@Injectable({ scope: Scope.REQUEST })处于请求范围内。这最终会根据每个请求创建一个新的管道,但是嘿,如果这是你喜欢的那杯茶那就太好了。

  2. 创建一个自定义参数装饰器,因为自定义装饰器完全按原样传递到管道中。请注意,如果在类或方法级别全局绑定,这可能会影响其功能。ValidationPipe