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

使用pg-promise检查只读数据库可用性时调用报错问题排查

问题分析与解决

你的报错根源是getDb函数没有返回内部的Promise链,导致getDb()直接返回undefined,后续调用.oneOrNone()自然会抛出"Cannot read property 'oneOrNone' of undefined"的错误。

修复后的getDb函数

const getDb = () => {
  // 关键:return整个Promise链
  return dbR
    .connect()
    .then(() => {
      return dbR;
    })
    .catch(() => {
      return dbRW;
    });
};

正确调用方式

因为getDb()现在返回的是Promise,需要先等待它完成拿到数据库实例,再调用oneOrNone:

const db = await getDb();
await db.oneOrNone(sql);

或者直接链式调用:

await getDb().then(db => db.oneOrNone(sql));

补充说明

原函数中,.then()和.catch()里的return是针对Promise回调的,但外层函数getDb没有把整个Promise返回出去,所以外部拿到的是undefined而非Promise实例,也就无法用await处理或调用实例方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 05:23:14