我正在使用一个带有字段的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-中间件,但仍然只有在验证之后才会调用中间件。
发布于 2021-08-22 09:44:24
您不能轻易改变这一点,因为它是来自graphql-js的标准GraphQL查询验证。它会静态分析您查询,并查看您没有提供一些输入或提供了错误类型的变量。
它发生在整个graphql执行流水线之前,中间件和其他工具开始发挥作用。
https://stackoverflow.com/questions/68548668
复制相似问题