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

调用pg-promise扩展方法触发TypeError: Invalid connection details: undefined

问题排查与解决

核心原因

你遇到的错误根源是QuestionsRepository实例未正确关联pg-promise的数据库连接实例,导致调用方法时无法获取有效连接配置。直接执行SQL和测试连接能成功,说明基础连接配置无问题,问题出在Repository类的扩展或实例化逻辑上。

具体修复步骤

1. 修正Repository类定义

确保QuestionsRepository在定义时接收数据库实例并保存,避免内部重新初始化连接:

class QuestionsRepository {
  constructor(db) {
    this.db = db; // 保存传入的数据库实例
  }

  create(questionData) {
    return this.db.none('INSERT INTO questions(title, content) VALUES(${title}, ${content})', questionData);
  }
}

2. 正确关联数据库实例

通过pg-promise的实例来初始化Repository,不要在Repository内部重新创建pg-promise实例:

const pgp = require('pg-promise')();
const db = pgp(你的连接配置);

// 方式1:直接传入db实例初始化Repository
const questionsRepo = new QuestionsRepository(db);

// 方式2:通过pg-promise扩展注册(推荐,方便全局调用)
db.$extend({
  questions: new QuestionsRepository(db)
});

3. 规避错误写法

绝对不要在Repository内部无配置初始化pg-promise,这会直接导致连接信息undefined:

// 错误示例,务必避免
class QuestionsRepository {
  constructor() {
    const pgp = require('pg-promise')();
    this.db = pgp(); // 未传入连接配置,触发错误
  }
}

4. 验证实例调用逻辑

确保调用create方法时,使用的是已关联有效数据库实例的Repository对象,而非重新创建的空实例。比如依赖注入场景下,要确认注入的是正确初始化后的实例。

验证修复

完成上述调整后,重新调用QuestionsRepository.create()方法,即可正常执行SQL操作,不再抛出连接信息undefined的错误。

内容的提问来源于stack exchange,提问作者Natural Unintelligence

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 22:28:10