解析自定义标量类型时,知道将值定义为Nullable还是NotNullable

时间:2019-05-08 20:29:22

标签: graphql graphql-js transit sanctuary

我正在创建自定义标量类型,这些标量类型将覆盖内置的IntFloat。我想知道架构是否将值定义为可为空。我想用一种自定义标量类型来解析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类型。

0 个答案:

没有答案