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

如何从Express中连接Heroku PostgresQL数据库?

Express 连接 Heroku Postgres 操作指南(基于 npm pg 库)

前置确认

  • 已在Heroku应用的Resources标签页绑定Heroku Postgres实例,绑定完成后Heroku会自动注入名为DATABASE_URL的环境变量到后端运行环境,无需手动录入变量值
  • Express项目已安装pg依赖,未安装可执行npm i pg完成安装

数据库连接代码实现

生产环境推荐使用连接池获取更高的性能,参考配置代码如下:

const { Pool } = require('pg');

const pool = new Pool({
  connectionString: process.env.DATABASE_URL,
  // Heroku Postgres 强制要求SSL连接
  ssl: {
    rejectUnauthorized: false
  }
});

// 连接状态监听,方便排错
pool.on('connect', () => {
  console.log('Heroku Postgres 连接成功');
});

pool.on('error', (err) => {
  console.error('数据库连接异常', err);
});

module.exports = pool;

注意:如果省略SSL相关配置会直接抛出连接错误,这是Heroku Postgres的强制安全要求,不可省略

你可以在任意需要操作数据库的路由/逻辑文件中引入上述导出的pool实例,执行查询的示例如下:

// 示例路由
app.get('/api/list', async (req, res) => {
  try {
    const queryResult = await pool.query('SELECT * FROM 你的表名 LIMIT 10');
    res.status(200).json(queryResult.rows);
  } catch (err) {
    console.error('查询失败:', err);
    res.status(500).json({msg: '数据获取失败'});
  }
});

本地测试可选配置

如果你需要在本地开发环境也连接Heroku的远程Postgres做测试,可以按以下步骤操作:

  • 安装dotenv依赖:npm i dotenv
  • 在项目根目录新建.env文件,写入你获取到的Heroku Postgres连接字符串:DATABASE_URL=你从Heroku后台复制的数据库连接地址
  • 在Express入口文件最顶部添加代码:require('dotenv').config()
  • 不要将.env文件提交到代码仓库,避免凭证泄露

部署验证

代码提交到Heroku完成部署后,可执行heroku logs --tail查看运行日志,若打印「Heroku Postgres 连接成功」且无相关报错,说明数据库连接已经正常工作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 11:24:03