我想将 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,
});
});
但是如果我尝试这样做,似乎请求没有通过。
根据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)。
嘿,我也遇到同样的问题,有更新吗?