如何使用 createYoga 函数将快速请求和响应对象传递到 graphql-yoga 上下文中?

问题描述 投票:0回答:2

我想将 Express

req
res
对象传递到我的上下文,因为我想使用
express-sessions
进行基于会话的身份验证,因为上下文中的默认
requests
不知道会话。这是我尝试过的

app.use("/graphql", (req, res) => {
    return createYoga({
      context: ({ params }) => {
        return {
          req,
          params,
          res,
          prisma,
          redis: redisClient,
        };
      },
      graphiql: true,
      landingPage: false,
      cors: false,
      schema,
    });
});

但是如果我尝试这样做,似乎请求没有通过。

express graphql graphql-yoga
2个回答
3
投票

根据docs,在node.js和express运行时运行时,上下文会自动产生请求和响应。

服务器上下文

创建服务器实例时,GraphQL Yoga 接受额外的 来自将合并的基础服务器框架或库的对象 与默认上下文。 Node.js(独立、express 和 Next.js 等)

如果您使用 GraphQL Yoga 作为带有 createServer 的独立服务器 来自 http(s) 模块或将其公开为中间件,如我们所示 Express 或 Next.js 集成方案。

req - Node.js IncomingMessage object
res - Node.js ServerResponse object

req 和 res 对象被添加到初始上下文对象中。

const serverContext = { ...defaultContext, req, res }

因此,当使用@graphql-yoga/node时,可以访问 GraphQL 解析器或用户中的 context.req 和 context.res 上下文工厂函数。

但是,我们建议避免使用 context.req 和 context.res 尽可能使用 context.request,因为它更 面向未来且独立于平台(因为 Node.js HTTP 服务器采用 获取响应 API)。

我确实尝试过这个,上下文确实有 req 和 res 对象。 req and res present while running in node.js and express.


0
投票

嘿,我也遇到同样的问题,有更新吗?

© www.soinside.com 2019 - 2024. All rights reserved.