首页 > 解决方案 > 如何在保持对请求对象的访问的同时对 express-graphql 解析器进行依赖注入?

问题描述

我在我的 nodejs 应用程序中使用 express-graphql。

为了从解析器访问数据库,我创建了一个名为的对象ProjectHandler(它处理数据库中名为 的表),并通过在创建实例时projects更改将其注入解析器,如下所示:contextexpress-graphql

app.use('/graphql', graphqlHTTP({
  schema,
  graphiql: true,
  context: {projectsHandler}
}))

问题是,这将默认上下文替换为请求对象的表示,从而阻止我访问会话信息。

问题是,我需要会话信息和项目处理程序。我怎么做?

标签: node.jsgraphqlexpress-graphql

解决方案


graphqlHTTP函数返回一个 expressmiddleware所以为了传递一个context包含request对象的自定义,我们必须用我们自己的来包装这个函数middleware,并激活graphqlHTTP middleware

下面的代码应该可以工作(没有尝试过):

 app.use('/graphql', (request, response) => {
     return graphqlHTTP({
        schema,
        graphiql: true,
        context: {
            projectsHandler,
            request
        }
     })(request, response);
 })

推荐阅读