【发布时间】:2021-07-12 03:57:41
【问题描述】:
我是 postgres 的新手。我有一个应用程序,它在本地运行良好,具有相同的环境配置,但在发出第一个即登录请求时,它给了我请求超时错误,如下所示。
at=error code=H12 desc="Request timeout" method=POST path="/login" host=abc.herokuapp.com request_id=87ed82a9-799f-415d-8277-bdb195978570 fwd="XX.XX.XX.XXX" dyno=web.1 connect=1ms service=30001ms status=503 bytes=0 protocol=https
我使用 Node.js 作为后端,使用 npm pg 包连接 postgres 并将应用程序部署在 heroku 上。
这是连接文件。
const {Pool} = require('pg')
const dbConfig = {
connectionString: process.env.DATABASE_URL,
ssl:true,
}
console.log('process.env.DATABASE_URL: '+process.env.DATABASE_URL);
const pool = new Pool(dbConfig);
pool.on('error',function(err){
console.log('Error Message'+err.message);
console.log('Error Stack'+err.stack);
})
module.exports = {
pool,
}
请求登录处理程序如下:
const { pool } = require('../db/dbConfig');
router.post('/login', async (req, res) => {
try {
const { email, password } = req.body;
if (!email || !password) {
errors.push({ msg: 'Please enter all fields' });
res.render('login', { errors });
}
console.log("going to query pool"); // gets printed
const loginResult = await pool.query('SELECT Id, Name, email, FROM users WHERE email = $1 AND password2__c = $2', [email, password]);
console.log("result"); // this never gets printed
res.render('dashboard', { user: { name: "aa", token: "abc" } });
} catch {
res.render('error')
}
})
在本地它运行良好并且收到响应,但在生产中它给出了超时。
【问题讨论】:
-
我试过 node-postgres.com/guides/project-structure 没有任何效果。
-
你可能想看看这个答案:stackoverflow.com/questions/63009221/…
标签: node.js postgresql heroku heroku-postgres