graphql/execution
模块负责完成一个 GraphQL 请求的执行阶段。你可以直接从 graphql/execution
模块导入,也可以从 graphql
这个根模块导入。举例来说就是这样:
import { execute } from 'graphql'; // ES6var { execute } = require('graphql'); // CommonJS
export function execute(schema: GraphQLSchema,documentAST: Document,rootValue?: mixed,contextValue?: mixed,variableValues?: ?{[key: string]: mixed},operationName?: ?string): MaybePromise<ExecutionResult>type MaybePromise<T> = Promise<T> | T;type ExecutionResult = {data: ?Object;errors?: Array<GraphQLError>;}
上面的代码实现了 GraphQL 规范中“处理请求”的部分。
它会返回一个最终一定会被 resolve 而不会被 reject 的 Promise。
如果这个函数的参数造成了一个非法的执行上下文,那么马上就会有一个 GraphQLError 被抛出,这个错误将会解释非法输入的具体信息。
ExecutionResult
代表执行的结果。data
是执行查询语句的结果,errors
在没有错误发生时为空,在有错误发生时为一个非空的数组。