Graphql apollo server如何在koa/express中间件中访问数据源

Graphql apollo server如何在koa/express中间件中访问数据源,graphql,apollo,apollo-server,Graphql,Apollo,Apollo Server,我是阿波罗服务器的新手,所以我可能做错了什么 在apollo服务器中,数据源用于通过apollo服务器创建和初始化。但是我还想访问koa中间件中的一些数据源。比方说,我有一个名为UserDataSource的DataSource,这就是我使用ApolloServer创建它的方式: const server = new ApolloServer({ typeDefs, resolvers, dataSources:function(){ return {

我是阿波罗服务器的新手,所以我可能做错了什么

apollo服务器
中,
数据源
用于通过
apollo服务器
创建和初始化。但是我还想访问
koa
中间件中的一些
数据源
。比方说,我有一个名为
UserDataSource
DataSource
,这就是我使用
ApolloServer
创建它的方式:

const server = new ApolloServer({
    typeDefs,
    resolvers,
    dataSources:function(){
        return {
            user: new UserDataSource(),
        };
    },
});
// this is my middleware
async function auth(ctx, next){
    // Here I need to access `UserDataSource`

    // pass control down to apollo-server
    await next();
}

// koa server
const app = new Koa();
app.use(auth);
server.applyMiddleware({ app });
在此之后,我可以访问
解析器中的
数据源.user
。但是其他一些
中间件
也需要访问
用户数据源
。是否有一些关于如何实现这一目标的官方指南

PS,也许我可以在一个
中间件中手动创建所有数据源,并将它们分配给
ctx
。但我认为这是一个小技巧