如何在GraphQLparsing器中设置(数据库或其他)上下文?

GraphQL文档给出了一个parsing器函数的例子 ,它接受一个名为“context”的参数。

他们不得不这样说 –

context )提供给每个parsing器并保存重要上下文信息(如当前login的用户)或访问数据库的值。

他们的代码示例如下所示 –

 Query: { human(obj, args, context) { return context.db.loadHumanByID(args.id).then( userData => new Human(userData) ) } } 

这在我看来是一个完全自然的模式,希望在parsing器function内部进行数据库访问,毫不奇怪,这是我需要做的。

这个数据库上下文显然不是自动设置的,因为GraphQL完全不知道你的数据持久化方式。

我的问题是,如何configuration这个上下文来提供一个特定的db接口? 我在教程/文档或其他地方找不到这个。

调用graphql函数时,可以将上下文传递给graphql。
这是在这里指定的。

这里是graphql函数的stream程定义:

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

上下文是在您设置服务器时定义的。 我也无法在文档中看到它。

 graphqlExpress(req => { return { schema: makeExecutableSchema({ typeDefs: schema.ast, resolvers, logger }), context: { db: mongodb.MongoClient.connect(...) } }; })