我需要创建类似于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)
注意:如果您的typeDefs
和resolvers
通常将其传递给Apolloserver配置,则可以通过将它们传递到graphql-tools
'makeExecutableSchema
而代替GraphQLSchema
对象(而不是apollo-server
和graphql-yoga
在引擎盖下使用的(。/p>