То, что возвращается gql
, является DocumentNode объектом. Документ GraphQL может включать несколько определений, но, предполагая, что он имеет только одно определение и является операцией, вы можете просто сделать:
const operation = doc.definitions[0]
const operationName = operation && operation.name
Если мы разрешаем, что могут быть фрагменты, мы, вероятно, захотим сделать:
const operation = doc.definitions.find((def) => def.kind === 'OperationDefinition')
const operationName = operation && operation.name
Имейте в виду, что технически возможно существование нескольких операций в одном и том же документе, но если вы выполняете эту клиентскую часть со своим собственным кодом, этот факт может быть неактуальным.
Базовая библиотека также предоставляет служебную функцию:
const { getOperationAST } = require('graphql')
const operation = getOperationAST(doc)
const operationName = operation && operation.name