在apollo 2中无需重新启动服务器即可更新graphql模式

在apollo 2中无需重新启动服务器即可更新graphql模式,graphql,apollo,graphql-js,Graphql,Apollo,Graphql Js,我的项目有一种定义模式和解析器的声明式方式,它在一个单独的存储库中维护。我的graphql服务器轮询结果以查找架构的更新 使用阿波罗服务器-express@1,我可以直接访问graphqlExpress中间件,因此当模式发生变化时,我可以构建一个新的实例,然后扔掉旧的实例,类似这样 const { graphqlExpress } = require('apollo-server-express'); let api; const constructAPI = () => {

我的项目有一种定义模式和解析器的声明式方式,它在一个单独的存储库中维护。我的graphql服务器轮询结果以查找架构的更新

使用阿波罗服务器-express@1,我可以直接访问graphqlExpress中间件,因此当模式发生变化时,我可以构建一个新的实例,然后扔掉旧的实例,类似这样

const { graphqlExpress } = require('apollo-server-express');

let api;

const constructAPI = () => {
    try {
        const newSchema = createSchema();
        api = graphqlExpress(({ headers }) => ({
            schema: newSchema,

        }));

        logger.info({ event: 'GRAPHQL_SCHEMA_UPDATED' });

};

schemaPoller.on('change', constructAPI);

module.exports = router => {

    // Note that we wrap the api controller in a function that passes
    // the original args through because a new api controller is generated
    // every time the schema changes. We can't pass express a direct
    // reference to the api controller on startup, or it will
    // never update the reference to point at the latest version of the
    // controller using the latest schema
    router
        .route('/')
        .get((...args) => api(...args))
        .post((...args) => api(...args));

    return router;
};
在阿波罗服务器中-express@2,对中间件的访问是隐藏的,有两种新的、更具声明性的使用库的方法,乍一看,这两种方法都不兼容在不停止服务器、获取新模式并重新开始使用新数据的情况下更新模式,这是我希望避免的停机时间

有人能建议一种让这个设置工作的方法吗apollo@2?