Как получить простой запрос на мутацию graphql из сгенерированной схемы?

Я использую генератор кода graphql, чтобы получить сгенерированный файл:

npx graphql-codegen --config libs/codegen.yml

В этом файле у меня есть

export const AddDataDocument = gql`
    mutation addData($input: AddDataInput!) {
    addData(input: $input) {
        id
    }
}`;

что дает мне документ gql.

В моих тестах (используя supertest), Я делаю:

const query = `
    mutation addData($input: AddDataInput!) {
    addData(input: $input) {
        id
    }
}`
request(app.getHttpServer())
  .post('/graphql')
  .send({
    operationName: null,
    query,
    variables: { input: addDataInput }
  })

Я не хочу писать мутацию вручную. Я хочу использовать созданный мной файл схемы. Но, к сожалению, существует определенный gql, как упоминалось в начале этого сообщения.

Можно ли сгенерировать что-то для использования в моем send()?

request(app.getHttpServer())
  .post('/graphql')
  .send({
    operationName: null,
    query: AddDataDocument, // <-- but this is not working as it is a gql document
    variables: { input: addDataInput }
  })

codegen.yml

overwrite: true
schema: "apps/backend/src/app/**/*.graphql"
generates:
libs/generated/generated.ts:
    documents: "libs/**/*.graphql"
    plugins:
    - "typescript"
    - "typescript-operations"
    - "typescript-react-apollo"
    config:
    withHooks: true
    withComponent: false
    withHOC: false

1 ответ

Решение

Если я правильно тебя понял, AddDataDocument это DocumentNode объект (возвращаемое значение gqlin vocation), и вы хотите получить из него запрос в виде строки. Это оно?

Если да, попробуйте это:

import { print } from 'graphql'

...

request(app.getHttpServer())
  .post('/graphql')
  .send({
    operationName: null,
    query: print(AddDataDocument),
    variables: { input: addDataInput }
  })

Пару дней назад я столкнулся с подобной проблемой (часть вопроса "как мне вернуть проанализированный объект документа в строку").

Вот откуда пришла идея:

https://github.com/apollographql/graphql-tag/issues/144

Другие вопросы по тегам