一个解析器函数的GraphQL文档give an example,它接受一个名为" context"的参数。
他们不得不这样说 -
context
提供给每个解析程序的值,包含重要的上下文信息,如当前登录的用户或访问数据库。
他们的代码示例如下所示 -
Query: {
human(obj, args, context) {
return context.db.loadHumanByID(args.id).then(
userData => new Human(userData)
)
}
}
在我看来,在解析器函数中想要数据库访问是一种非常自然的模式,毫不奇怪,这是我需要做的事情。
显然,这个数据库上下文不会自动设置,因为GraphQL完全不了解您的特定数据持久性方法。
我的问题是,如何配置此上下文以提供特定的数据库接口?我无法在教程/文档或其他任何地方找到这一点。
答案 0 :(得分:4)
上下文。我也无法在文档中看到它。
graphqlExpress(req => {
return {
schema: makeExecutableSchema({
typeDefs: schema.ast,
resolvers,
logger
}),
context: {
db: mongodb.MongoClient.connect(...)
}
};
})
答案 1 :(得分:2)
调用graphql
函数时,您可以将上下文传递给graphql
它被指定为here。
以下是graphql
函数的流程定义:
graphql(
schema: GraphQLSchema,
requestString: string,
rootValue?: ?any,
contextValue?: ?any, // Arbitrary context
variableValues?: ?{[key: string]: any},
operationName?: ?string
): Promise<GraphQLResult>