Javascript Heroku Postgres连接增加,无需重复使用

Javascript Heroku Postgres连接增加,无需重复使用,javascript,postgresql,heroku,knex.js,koa2,Javascript,Postgresql,Heroku,Knex.js,Koa2,第一次用“免费层”建立Heroku的postgres服务。我用HeloCU来托管一个膝关节炎的服务器与PG数据库。服务器通过knexjs与数据库通信。我不确定我是否错误地使用了knexjs,因为每次我运行查询时,它都会创建一个新的连接,正如通过Heroku的仪表板看到的那样,并最终耗尽连接。此外,我注意到它们是内部IP(即10.1…),主要消耗我的连接。如果我杀了他们,我的连接就会下降到0。我的knex查询如下: 出于缓存的目的,我在每个连接上都启动了一个类(只有在同一客户机请求期间运行多个查询

第一次用“免费层”建立Heroku的postgres服务。我用HeloCU来托管一个膝关节炎的服务器与PG数据库。服务器通过knexjs与数据库通信。我不确定我是否错误地使用了knexjs,因为每次我运行查询时,它都会创建一个新的连接,正如通过Heroku的仪表板看到的那样,并最终耗尽连接。此外,我注意到它们是内部IP(即10.1…),主要消耗我的连接。如果我杀了他们,我的连接就会下降到0。我的knex查询如下:

出于缓存的目的,我在每个连接上都启动了一个类(只有在同一客户机请求期间运行多个查询时才有用)

在我的解析器中调用它

export const resolvers = {
  Query: {
    GetData: async (p, a, c, i) => {
      const { k } = c;
      return k.SelectAsync<TABLETYPE>("TABLENAME", { id: "someId" });
    },
  },
};
导出常量解析程序={
查询:{
GetData:async(p,a,c,i)=>{
常数{k}=c;
返回k.SelectAsync(“TABLENAME”,{id:“someId”});
},
},
};

一切正常,但我是否以使连接保持活动和/或防止连接重用的方式不当地使用knex?如何“修复”代码以正确地重用knex连接池中的连接?

我找到了答案。因为我正在为每个连接创建一个新类,所以将为每个访问者建立一个新的knex连接。我尝试将knex属性设置为静态,但显然在javascript中,静态属性只能通过静态方法访问。。。因此,我将knex属性移到类之外,并将它们转换为
export const

const server = new ApolloServer({
    typeDefs,
    resolvers,
    // schemaDirectives,
    debug: ISDEV,
    tracing: ISDEV,
    playground: {
        settings: {
            "request.credentials": "include",
        },
    },
    context: async (context) => {
        context.k = new KnexCache();
        return context as Context;
    },
});
export const resolvers = {
  Query: {
    GetData: async (p, a, c, i) => {
      const { k } = c;
      return k.SelectAsync<TABLETYPE>("TABLENAME", { id: "someId" });
    },
  },
};