我在 GraphQL 结果中取回查询名称有什么原因吗?

Any reason I am getting back the query name in the GraphQL results?

makeExecutableSchema 与以下查询定义结合使用:

# Interface for simple presence in front-end.
type AccountType {
    email: Email!
    firstName: String!
    lastName: String!
}

# The Root Query
type Query {
    # Get's the account per ID or with an authToken.
    getAccount(
        email: Email
    )   : AccountType!
}

schema {
    query: Query
}

以及以下解析器:

export default {
    Query: {
        async getAccount(_, {email}, { authToken }) {
            /**
             * Authentication
             */
            //const user = security.requireAuth(authToken)

            /**
             * Resolution
             */
            const account = await accounts.find({email})
            if (account.length !== 1) {
                throw new GraphQLError('No account was found with the given email.', GraphQLError.codes.GRAPHQL_NOT_FOUND)
            }
            return account
        }
    }
}

当我查询时:

query {
  getAccount(email: "test@testing.com") {
    firstName
    lastName
  }
}

我在 GraphiQL 中得到以下结果:

{
  "data": {
    "getAccount": {
      "firstName": "John",
      "lastName": "Doe"
    }
  }
}

那么,我在结果中得到这个 "getAccount" 的原因是什么?

因为getAccount 不是查询名称。它只是根查询类型 Query.

上的一个常规字段

并且在 上获得与查询完全相同的形状 的结果是 GraphQL 的核心设计原则之一:

来自 http://graphql.org/ 站点的屏幕截图

GraphQL 中的查询名称在 query 关键字之后:

query myQueryName {
  getAccount(email: "test@testing.com") {
    firstName
    lastName
  }
}