GraphQL解析器包含在节点过程中,而不是服务器中



我需要创建类似于GraphQl Server的内容,但完全包含在节点过程中,而不是实际的服务器。因此,从本质上讲,您将以查询或突变为字符串调用的JavaScript函数,它将基于分辨率返回对象或字符串。

我知道这是一个奇怪的要求。我们需要在我的公司模拟GraphQl Server,并且由于构建管道中的某些限制,我们无法运行实际的服务器。

很抱歉,这是一个非常开放的问题,但我不知道从哪里开始。哪个软件包包含GraphQl的核心功能?如果我正在制作GraphQl Server,我将使用Apollo Server或GraphQl Yoga软件包,但是很难搜索我的需求,因为这是一个不寻常的要求。

您只需要vanilla graphql.js软件包( graphql(即可针对架构执行查询。包装带有以下签名的graphql功能:

graphql(
  schema: GraphQLSchema,
  requestString: string,
  rootValue?: ?any,
  contextValue?: ?any,
  variableValues?: ?{[key: string]: any},
  operationName?: ?string
): Promise<GraphQLResult>

来自文档:

GraphQl函数LEXES,解析,验证并执行GraphQl请求。它需要模式和请求串。可选参数包括一个root值,该词值将作为根值传递给执行程序,上下文值将传递给所有解析函数,变量值,该函数将传递给执行者,以提供请求标准中的任何变量的值,这允许呼叫者指定请求条件中的哪个操作,如果RequestString包含多个顶级操作。

因此,给定模式,您可以做:

const request = `
  query MyQuery {
    someField
  }
`
const { data, errors } = graphql(schema, request)

注意:如果您的typeDefsresolvers通常将其传递给Apolloserver配置,则可以通过将它们传递到graphql-tools'makeExecutableSchema而代替GraphQLSchema对象(而不是apollo-servergraphql-yoga在引擎盖下使用的(。/p>

相关内容

最新更新