如何在保持对请求对象的访问权限的同时对 express-graphql 解析器进行依赖注入?
How to do dependency injection to express-graphql resolvers while keeping access to the request object?
我在我的 nodejs 应用程序中使用 express-graphql。
为了从解析器访问数据库,我创建了一个名为 ProjectHandler
的对象(它处理数据库中名为 projects
的 table)并且我' m 通过在创建 express-graphql
实例时更改 context
将其注入解析器,如下所示:
app.use('/graphql', graphqlHTTP({
schema,
graphiql: true,
context: {projectsHandler}
}))
问题是,这取代了默认上下文作为请求对象的表示,阻止我访问会话信息。
问题是,我需要会话信息和项目处理程序。我该怎么做?
graphqlHTTP
函数 returns 表达 middleware
所以为了传递自定义 context
和其中的 request
对象,我们必须用我们自己的 middleware
包装那个函数,然后激活 graphqlHTTP
middleware
下面这段代码应该可以工作(还没有尝试过):
app.use('/graphql', (request, response) => {
return graphqlHTTP({
schema,
graphiql: true,
context: {
projectsHandler,
request
}
})(request, response);
})
我在我的 nodejs 应用程序中使用 express-graphql。
为了从解析器访问数据库,我创建了一个名为 ProjectHandler
的对象(它处理数据库中名为 projects
的 table)并且我' m 通过在创建 express-graphql
实例时更改 context
将其注入解析器,如下所示:
app.use('/graphql', graphqlHTTP({
schema,
graphiql: true,
context: {projectsHandler}
}))
问题是,这取代了默认上下文作为请求对象的表示,阻止我访问会话信息。
问题是,我需要会话信息和项目处理程序。我该怎么做?
graphqlHTTP
函数 returns 表达 middleware
所以为了传递自定义 context
和其中的 request
对象,我们必须用我们自己的 middleware
包装那个函数,然后激活 graphqlHTTP
middleware
下面这段代码应该可以工作(还没有尝试过):
app.use('/graphql', (request, response) => {
return graphqlHTTP({
schema,
graphiql: true,
context: {
projectsHandler,
request
}
})(request, response);
})