You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cypress中Postgres NPM无法连接第二个数据库问题求助

连接两个PostgreSQL数据库时第二个查询报错求助

我正在使用cypress-postgresql包连接两个PostgreSQL数据库,目前第一个数据库能正常连接,但执行第二个数据库的查询时会抛出错误。以下是我的连接池代码和数据库配置片段:

连接池代码

var pool = new pg.Pool(config.db);
var pool1 = new pg.Pool(config.db1)
tasks = postgreSQL.loadDBPlugin( pool );
on('task', tasks);

数据库配置

db: {
  user: "postgres",
  password: "*****",
  host: "localhost",
  port: "5432",
  database: "global"  
},
db1:{ 
  user: "postgres",
  password: "*****",
  host: "localhost",
  port: "5432",
  database: "site"
},

问题分析

当前代码仅将第一个连接池生成的任务注册到了Cypress的task中,第二个连接池的任务未被注册,导致执行第二个数据库的查询时,Cypress找不到对应的处理逻辑,从而抛出错误。

解决方案

1. 合并两个连接池的任务

为两个连接池分别生成任务对象,合并后再注册到task:

var pool = new pg.Pool(config.db);
var pool1 = new pg.Pool(config.db1);

// 为两个连接池生成各自的任务
const tasksGlobal = postgreSQL.loadDBPlugin(pool);
const tasksSite = postgreSQL.loadDBPlugin(pool1);

// 合并任务对象
const combinedTasks = { ...tasksGlobal, ...tasksSite };

// 注册合并后的任务
on('task', combinedTasks);

2. 处理方法名冲突(可选)

如果两个连接池的任务方法名重复(比如都默认提供query方法),需要重命名避免覆盖:

var pool = new pg.Pool(config.db);
var pool1 = new pg.Pool(config.db1);

const tasksGlobal = postgreSQL.loadDBPlugin(pool);
// 重命名第二个连接池的query方法
const tasksSite = {
  querySite: postgreSQL.loadDBPlugin(pool1).query
};

const combinedTasks = { ...tasksGlobal, ...tasksSite };
on('task', combinedTasks);

此时在测试代码中,使用cy.task('query')操作global数据库,cy.task('querySite')操作site数据库即可。

内容的提问来源于stack exchange,提问作者zarbakht jalil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 08:10:31