typeGraphql 如何更改字段验证的消息

Posted

技术标签:

【中文标题】typeGraphql 如何更改字段验证的消息【英文标题】:typeGraphql how to change message for Field validation 【发布时间】:2021-10-03 12:03:35 【问题描述】:

我正在使用带字段的 InputType:

@InputType('RegisterInput')
export default class RegisterInput 
    @Field(nullable: true)
    username: string
    @Field(nullable: true)
    password: string
    @Field(nullable: true)
    age?: number

当年龄不是数字时,我会收到如下错误:

UserInputError 
  message: 'Variable "$registerInput" got invalid value "text" at "registerInput.age"; Int cannot represent non-integer value: "text"',
  locations: [  line: 1, column: 19  ],
  path: undefined,
  extensions:  code: 'BAD_USER_INPUT' 

如何将消息更改为更加用户友好?我尝试的所有类型的中间件和类验证仍然首先产生此错误,然后产生任何其他错误。

如果我可以禁用它并在我的中间件中进行验证,那就更好了。

我尝试使用 graphql-middleware,但仍然只有在此验证之后才调用中间件。

【问题讨论】:

【参考方案1】:

您无法轻易更改,因为它是来自 graphql-js 的标准 GraphQL 查询验证。它静态分析您的查询,并查看您何时不提供某些输入或提供错误类型的变量。

它发生在整个 graphql 执行管道之前,中间件和其他东西开始发挥作用。

【讨论】:

以上是关于typeGraphql 如何更改字段验证的消息的主要内容,如果未能解决你的问题,请参考以下文章

Passport (oAuth2) 如何与 GraphQL (TypeGraphQL) 一起使用?

如何在Rails 5中更改设计中的验证错误消息

使用自定义类型的 TypeGraphql 字段和 Arg 装饰器

jQuery 验证:更改默认错误消息

如何防止引导验证在表单提交之前显示错误消息?

Laravel Spark 中的自定义验证消息