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

时间:2020-02-04 13:34:00

标签: nestjs

我正在尝试从Request object中的Validation Pipe内部访问nestjs

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

有什么主意吗?

1 个答案:

答案 0 :(得分:0)

当前,根本无法在pipe中访问请求对象。如果您需要此请求,则可以使用guardinterceptor

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

编辑11/17/2020

在学习了有关框架整体工作方式的更多信息之后,从技术上讲,可以将整个请求对象放在管道中。有两种解决方法。

  1. 使管道@Injectable({ scope: Scope.REQUEST })成为request scoped。最终将在每个请求上创建一个新管道,但是,嘿,如果那是您的一杯茶,那就太好了。

  2. 使custom parameter decorator成为自定义装饰器,将它们按原样完全传递到管道中。请注意,如果ValidationPipe是在类,方法级别上全局绑定的,那么这可能会影响new DefaultDirectedGraph<GraphNode,StandardFieldConnKeyEdge>(StandardFieldConnKeyEdge.class) {的工作方式。