Знайте, определено ли значение как Nullable или NotNullable при разрешении пользовательского скалярного типа - PullRequest
1 голос
/ 08 мая 2019

Я создаю пользовательские скалярные типы, которые переопределяют встроенные 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 (Nullable) будет иметь тип Maybe Integer, а результат Int! (Non-Nullable) будет иметь тип Integer

...