【问题标题】:How to do dependency injection to express-graphql resolvers while keeping access to the request object?如何在保持对请求对象的访问的同时对 express-graphql 解析器进行依赖注入?
【发布时间】:2019-01-11 18:56:55
【问题描述】:

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

为了从解析器访问数据库,我创建了一个名为 ProjectHandler 的对象(它处理数据库中名为 projects 的表),我通过更改 @ 将其注入解析器987654323@ 创建express-graphql 实例时,像这样:

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

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

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

【问题讨论】:

    标签: node.js graphql express-graphql


    【解决方案1】:

    graphqlHTTP 函数返回一个 express middleware,所以为了传递一个带有 request 对象的自定义 context,我们必须用我们自己的 middleware 包装该函数,并激活 @ 987654326@middleware

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

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

    【讨论】:

    • 确实如此 :) 我实际上在 2 小时前就这样解决了! (最后的双亲 - 调用函数 - 实际上不是必需的,只需将 options 参数作为函数就足够了,express-graphql 每次请求都会调用它)
    猜你喜欢
    • 2018-02-18
    • 2018-03-01
    • 2021-07-27
    • 1970-01-01
    • 2013-06-17
    • 1970-01-01
    • 1970-01-01
    • 2011-05-05
    • 1970-01-01
    相关资源
    最近更新 更多