我目前正在将我的 Web 部署到 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
另外,当我需要从数据库中检索数据时,我会这样做在路由/users.js
const USER = require('../models/USER')
....
router.get('/', (req, res) => {
USER.findAll().then((users) => {
res.render('controlcenter', {
layout: 'layoutB',
users
})
})})
基本上,当我访问 localhost:3000/users 时,上述内容将从数据库中获取所有用户,并且它在本地主机上完美运行。但是,在将 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))
任何人都可以帮助我解决这个问题或为我提供一些关于我应该如何解决这个问题的提示?谢谢你。
最佳答案
超时通常意味着防火墙问题。
由于您一直在本地开发,因此我假设您有一个独立于您的 Elastic Beanstalk 环境的 RDS 实例。
您是否已将 Elastic Beanstalk 安全组添加到您的 RDS 实例?
https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/AWSHowTo.RDS.html
关于node.js - 将 Web 部署到 AWS Elastic Beanstalk 后,Sequelize 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62783907/