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
相关产品推荐
相关产品推荐

