Как получить простой запрос на мутацию 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
объект (возвращаемое значение gql
in vocation), и вы хотите получить из него запрос в виде строки. Это оно?
Если да, попробуйте это:
import { print } from 'graphql'
...
request(app.getHttpServer())
.post('/graphql')
.send({
operationName: null,
query: print(AddDataDocument),
variables: { input: addDataInput }
})
Пару дней назад я столкнулся с подобной проблемой (часть вопроса "как мне вернуть проанализированный объект документа в строку").
Вот откуда пришла идея: