Как извлечь интерфейсы машинописного текста из schema.graphql с помощью клиента apollo: codegen - PullRequest
1 голос
/ 28 марта 2020

мне кажется, что мне нужна помощь с этим, потому что я некоторое время искал решение.

Я создал проект angular с использованием graphql и настроил для этого клиента apollo. В бэкэнде я использую laravel с расширением rebing / graphql. Теперь я хотел бы извлечь некоторые интерфейсы машинописи из моей схемы, чтобы использовать их в моей логике c. Некоторое время go я начал разрабатывать свою собственную маленькую систему, в которой я динамически генерировал запросы gql из определения json во время выполнения. Полагаю, это тоже может быть оспорено - наверное ... Вот почему в моем коде нет реальных определений запросов к GraphQL. Я не использую никакие файлы .gql / .graphql.

Мой запрос graphql создается с чем-то вроде:

UserModel.with('posts', { pagination: 10, offset: 0 }).get() <-- QueryRef

Что я пытаюсь сказать, так это то, что я не могу легко запустить генератор машинописного текста apollo для поиска любых запросов в моем языке для создания типов.

Мне уже удалось загрузить мою схему из конечной точки следующим образом:

apollo client:download-schema ./libs/graphql/src/lib/schema.graphql --endpoint https://api.ellingtons-palace.com/graphql

Это работает довольно мило. Таким образом я могу получить схемы grapqhl или json.

Что я не могу сделать, так это генерировать машинописные файлы взаимодействий для использования в моем коде. Я пытался это так:

apollo codegen:generate --localSchemaFile=libs/graphql/src/lib/schema.json --target=typescript --includes=libs/graphql/src/lib/schema.graphql --tagName=graphql --addTypename --globalTypesFile=libs/graphql/src/lib/graphql-global-types.ts

К сожалению, каждый раз, когда я получаю такие ошибки, как:

The type of your project could not be derived from your config.

или Field "UserType.Locations" already exists in the schema. It cannot also be defined in this type extension.

Есть ли кто-то, кто может сказать мне, что я делаю неправильно, или какие могут быть варианты для преобразования моей схемы в действующий машинописный текст?

Заранее спасибо !!

Привет Жюля;)

1 Ответ

0 голосов
/ 28 марта 2020

Я думаю, что ваша проблема в том, что для apollo codegen:generate для работы вам нужна не просто схема, вам также необходимо предоставить запрос, который инструмент может проанализировать.

Запрос используется для определения какие типы должны генерировать инструменты. Он не генерирует все потенциальные типы для всей схемы, только те, которые вам действительно нужны, на основе свойств, которые вы запрашиваете.

* UserModel.with - это не синтаксис запроса GraphQL (выглядит как JavaScript ), поэтому я не думаю, что apollo codegen:generate может разобрать это. Он может анализировать graphql вложенный в JavaScript (или TypeScript), извлекая части graphql.

...