簡體   English   中英

如何將我的本地 node.js 應用程序連接到我的 Heroku Postgres 數據庫?

[英]How can I connect my local node.js app to my Heroku Postgres database?

當節點應用程序部署到 Heroku 時,我已經設法讓我的 Node.js 應用程序與我的 Heroku Postgres 數據庫正常工作。 但是,每次更改代碼時都必須部署到 heroku 有點費力,我寧願能夠在本地開發並從本地應用程序連接到數據庫。

https://devcenter.heroku.com/articles/connecting-to-heroku-postgres-databases-from-outside-of-heroku

上面的文章並沒有真正描述這是如何完成的,我不確定我需要做什么。

如果我嘗試在本地運行我的應用程序並訪問查詢我的數據庫的端點,我會得到

Error Error: connect ECONNREFUSED 127.0.0.1:5432

而如果我從我的 heroku 部署的應用程序訪問相同的端點,它可以正常工作。

這是我的應用程序

const express = require('express')
const path = require('path')
const PORT = process.env.PORT || 5000;
const { Pool } = require('pg');

const pool = new Pool({
    connectionString: process.env.DATABASE_URL,
    ssl: {
        rejectUnauthorized: false
    }
});

express()
  .use(express.static(path.join(__dirname, 'public')))
  .set('views', path.join(__dirname, 'views'))
  .set('view engine', 'ejs')
  .get('/', (req, res) => res.render('pages/index'))
    .get('/users', async (req, res) => {
        try {
            const client = await pool.connect();
            const result = await client.query('SELECT * FROM users');
            const results = { 'results': (result) ? result.rows : null};
            console.log(results);
            res.status(200).json(results);
        } catch (err) {
            console.error(err);
            res.send("Error " + err);
        }
    })
  .listen(PORT, () => console.log(`Listening on ${ PORT }`));

我認為您需要更新本地計算機上的 process.env.DATABASE_URL。 從錯誤中,看起來 DATABASE_URL 指的是本地主機,而您想使用托管在 Heroku 上的數據庫。

我了解您只想使用遠程數據庫。 該錯誤表示您無法連接到 127.0.0.1:5432。 這是 localhost 的 IP 地址,而不是遠程數據庫。 您的代碼出於某種原因嘗試連接到 127.0.0.1:5432,而它應該嘗試連接到遠程數據庫。

您是否使用 dotenv 訪問 process.env.DATABASE_URL? 你需要 dotenv.config(); 為我工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM