Postgresql 如何设置一个连接池或一个没有连接池的连接来共享Objectio.js上的临时表?

Postgresql 如何设置一个连接池或一个没有连接池的连接来共享Objectio.js上的临时表?,postgresql,nestjs,objection.js,Postgresql,Nestjs,Objection.js,我需要使用Postgres临时表(仅限)来存储临时生成的数据,以便在其他控制器和方法之间共享该数据 我的应用程序(Nest.js+objective.js) //app.module.ts async onModuleInit() { this.createVideoTempFolder(); // create temporaty table at account.repository.ts await this.accountRepository.crea

我需要使用Postgres临时表(仅限)来存储临时生成的数据,以便在其他控制器和方法之间共享该数据

我的应用程序(Nest.js+objective.js)

//app.module.ts

async onModuleInit() {
      this.createVideoTempFolder();
      // create temporaty table at account.repository.ts
      await this.accountRepository.createAccountTempTable();
    }
//account.repository.ts

public async createAccountTempTable() {
    // create TEMP TABLE FOR CURRENT SESSION
    const queryRaw = this.modelClass.knex();
    await queryRaw.raw(`CREATE TEMPORARY TABLE accounts ON COMMIT PRESERVE ROWS as select * from accounts_main;`);

 }
但我的应用程序在现有连接池中看不到任何临时表。 这意味着每个路由器请求都会使用objective.js启动一个新的连接池,临时表将保留在先前创建的连接池中,而我的应用程序不会看到任何临时表


如何在Objective.js上设置一个连接池或一个没有连接池的连接以共享临时表?

knex中有一个非公共API,可用于手动从连接池获取连接并将其释放回来。类似的事情也应该在knex公开

要使用knex的连接,您可以使用

大概是这样的:

let connection = await knex.client.acquireConnection();
try {
    const queryRaw = this.modelClass.knex().connection(connection);
    await queryRaw.raw(`CREATE TEMPORARY TABLE accounts ON COMMIT PRESERVE ROWS as select * from accounts_main;`);
} finally {
    knex.client.releaseConnection(connection);
}