перечисление graphql не определено в схеме - PullRequest
0 голосов
/ 14 мая 2019

Я сейчас изучаю GraphQL и наткнулся на эту ошибку. Как я могу это исправить, все еще используя объект GraphQLEnumType.

const { ApolloServer, gql } = require('apollo-server');
const { GraphQLEnumType } = require('graphql');

const Bonus = new GraphQLEnumType({
    name: 'Bonus',
    values: {
        BIG: {
            value: "Big",
        },
        SMALL: {
            value: "Small",
        }
    },
});

const typeDefs = gql`

enum Bonus {
  BIG
  SMALL
}
`;

const resolvers = {
    Bonus : Bonus
}

const server = new ApolloServer({
    typeDefs,
    resolvers
});

server.listen().then(({ url }) => {
    console.log(`?  Server ready at ${url}`);
});

Ниже приведена ошибка:

/ главная / Jonas / Проекты / JavaScript-вопросы-flow4b / Серверные / node_modules / graphql-инструменты / DIST / порождающие / addResolveFunctionsToSchema.js: 53 бросить новый _1.SchemaError (typeName + "." + fieldName + "был определен в резольверах, но enum отсутствует в схеме"); ^

Ошибка: Bonus.name был определен в резольверах, но enum отсутствует в схеме

1 Ответ

1 голос
/ 14 мая 2019

Вы не можете использовать GraphQLEnumType, если вы конфигурируете ApolloServer, используя typeDefs и resolvers.Вместо этого, если вы хотите предоставить пользовательские значения для значений перечисления, передайте соответствующий объект как часть вашего resolvers, как показано в документах .

const resolvers: {
  Bonus: {
    BIG: 'Big',
    SMALL: 'Small', 
  },
}

Обратите внимание, чтоэто нужно делать только в том случае, если вы хотите внутренне отобразить значения перечисления на что-то другое, чем их имена.BIG будет отображаться на "BIG", а SMALL будет отображаться на "SMALL" по умолчанию, поэтому, если это все, что вам нужно, просто не включайте Bonus в свои средства распознавания вообще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...