Найти недостающие резолверы GraphQL в Аполлоне - PullRequest
0 голосов
/ 15 марта 2020

Используя apollo-server , если я пытаюсь определить распознаватель graphql, которого нет в моей схеме, компьютер кричит на меня.

[Ошибка: запрос. foo определено в резольверах, но не в схеме]

Это хорошо!

Возможно ли с помощью инструментов apollo (или других?) Сделать обратное? То есть, есть ли способ, чтобы apollo сообщал мне, есть ли в моей схеме операция запроса, мутации или подписки, но в моих резолверах определено , а не ?

1 Ответ

1 голос
/ 16 марта 2020

Существует необязательный объект resolverValidationOptions, который можно передать в makeExecutableSchema для обеспечения некоторых дополнительных проверок распознавателя, как показано здесь :

  • requireResolversForArgs заставить makeExecutableSchema выдавать ошибку, если для поля с аргументами не определена функция разрешения.
  • requireResolversForNonScalar заставит makeExecutableSchema выдать ошибку, если в нескалярном поле не определен определитель. Установка этого значения на true может быть полезна при обнаружении ошибок, но по умолчанию имеет значение false, чтобы избежать путаницы для тех, кто поступает из других библиотек GraphQL.
  • requireResolversForAllFields утверждает, что все поля имеют действительную функцию разрешения.
  • requireResolversForResolveType потребуется метод resolveType() для типов интерфейса и объединения. Это может быть передано с определителями полей как __resolveType (). False для отключения предупреждения.
  • allowResolversNotInSchema отключает функциональность, которая выдает ошибки при обнаружении распознавателей, которых нет в схеме. По умолчанию false, чтобы помочь обнаруживать распространенные ошибки.

Ни одно из них не предназначено специально для полей only типов root, но вы можете использовать один или несколько.

Эти опции не предоставляются напрямую через ApolloServer, но вы всегда можете сделать:

const schema = makeExecutableSchema({ typeDefs, resolvers, resolverValidationOptions })
const apollo = new ApolloServer({ schema })
...