我需要创建类似于GraphQL服务器的内容,但完全包含在节点进程中,而不是实际的服务器中。因此,从本质上讲,这是一个JavaScript函数,您可以将查询或突变作为字符串来调用,并且它将基于解析器返回具有响应的对象或字符串。
我知道这是一个奇怪的要求。我们需要在我的公司模拟GraphQL服务器,由于构建流程中的某些限制,我们无法运行实际的服务器。
很抱歉,这是一个悬而未决的问题,但我不知道从哪里开始。哪个软件包包含GraphQL的核心功能?如果要制作GraphQL服务器,我会使用Apollo Server或GraphQL Yoga软件包,但是Google很难满足我的需求,因为这是一个不寻常的要求。
答案 0 :(得分:0)
您只需要原始的GraphQL.js包(graphql
)即可对模式执行查询。程序包导出带有以下签名的graphql
函数:
graphql(
schema: GraphQLSchema,
requestString: string,
rootValue?: ?any,
contextValue?: ?any,
variableValues?: ?{[key: string]: any},
operationName?: ?string
): Promise<GraphQLResult>
从文档中
graphql函数可提取,解析,验证和执行GraphQL请求。它需要一个架构和一个requestString。可选参数包括rootValue(将作为根值传递给执行程序),contextValue(将被传递给所有解析函数),variableValues(将被传递给执行程序以为requestString中的任何变量提供值)和operationName ,如果requestString包含多个顶级操作,则调用者可以指定将运行requestString中的哪个操作。
因此,有了一个模式,您可以执行以下操作:
const request = `
query MyQuery {
someField
}
`
const { data, errors } = graphql(schema, request)
注意:如果您通常将typeDefs
和resolvers
传递给ApolloServer配置,则可以通过将它们传递给GraphQLSchema
'来创建graphql-tools
对象而是使用makeExecutableSchema
(这是apollo-server
和graphql-yoga
的主要作用)。