【发布时间】:2020-10-28 05:18:54
【问题描述】:
我目前正在将我的网站部署到 AWS Elastic Beanstalk。我使用 PostgreSQL 和 Sequelize,所以例如我有几个模型如下所示:
在模型/USER.js中
const sequelize = require('sequelize')
const db = require('../config/database')
const USER = db.define('USER', {
id: {
type: sequelize.INTEGER,
primaryKey: true,
autoIncrement: true
},
name: {
type: sequelize.STRING,
allowNull: false,
defaultValue: null
},
email: {
type: sequelize.STRING,
allowNull: false,
defaultValue: null
},
password: {
type: sequelize.STRING,
allowNull: false,
defaultValue: null
},
authen: {
type: sequelize.JSONB,
allowNull: false,
defaultValue: null
}}, {
tableName: 'USER',
freezeTableName: true,
timestamps: false
})
USER.sync().then(() => {
console.log('table created')
}).catch((err) => {
console.log(err)
})
module.exports = USER
另外,当我需要从数据库中检索数据时,我会这样做
在 routes/users.js 中
const USER = require('../models/USER')
....
router.get('/', (req, res) => {
USER.findAll().then((users) => {
res.render('controlcenter', {
layout: 'layoutB',
users
})
})})
当我访问 localhost:3000/users 时,基本上上面会从数据库中获取所有用户,并且它在 localhost 上完美运行。
但是,在将 Web 部署到 AWS 后,当我尝试访问 /users 页面时,Web 一直在加载,然后引发 504 Gateway Timeout 错误。
我很确定这是与 Sequelize 或 PostgreSQL 相关的问题,因为所有不涉及进入数据库和获取数据的页面都可以正常工作。
这是我连接数据库的方式,我使用的是 RDS
在 config/database.js 中
const Sequelize = require('sequelize')
module.exports = new Sequelize('****', 'postgres', '****', {
host: '****.****.us-east-2.rds.amazonaws.com',
port: 5432,
logging: console.log,
maxConcurrentQueries: 100,
dialect: 'postgres',
dialectOptions: {
ssl: {
require: true,
rejectUnauthorized: false
}
},
pool: {
maxConnections: 5,
maxIdleTime: 30
},
language: 'en'})
在 app.js 中
// Database Config
const db = require('./config/database')
// Test Connection
db.authenticate()
.then(() => console.log('Database connect'))
.catch(err => console.log('Error' + err))
谁能帮我解决这个问题,或者给我一些关于我应该如何解决这个问题的提示?谢谢。
【问题讨论】:
标签: node.js postgresql sequelize.js amazon-elastic-beanstalk amazon-rds