我正在创建自定义标量类型,这些标量类型将覆盖内置的Int
和Float
。我想知道架构是否将值定义为可为空。我想用一种自定义标量类型来解析Int
而不是Int!
我想做的是在自定义标量类型的解析器中知道该值是否在模式中定义为Nullable,以便我可以不同地解析它们并引发自定义错误。
const resolvers = {
// ...
Int: new GraphQL.GraphQLScalarType ({
name: 'Int',
description: 'Custom Int type',
serialize (val, isNullable) {
},
parseValue (val, isNullable) {
// assume this parses the value
const value = transit.read (val);
// this does some type checking (using a library called sanctuary)
if (S.is ($.Integer) (value)) {
// if Nullable we want to return a maybe type
if (isNullable) return S.Just (value);
return value;
}
return isNullable ? S.Nothing : new Error ();
},
parseLiteral (ast) {
},
}),
}
Int
(可空)的结果将是Maybe Integer
类型,而Int!
(不可空)的结果将是Integer
类型。