node.js - 将 Web 部署到 AWS Elastic Beanstalk 后,Sequelize 不起作用

标签 node.js postgresql sequelize.js amazon-elastic-beanstalk amazon-rds

我目前正在将我的 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/

相关文章:

node.js - Firebase Cloud Functions - 无法读取未定义的属性 'forEach'

node.js - Nginx vs Node.js - 多个网络套接字服务器的反向代理

mysql - 我想使用sequelize nodejs 将四个不同表中的数据添加在一起

Postgresql:在不同机器之间拆分数据库

sql - 如何将 Postgresql varchar 列复制到整数列

postgresql - IN pq.Array 传递值失败

node.js - 如何查看 Sequelize.js 生成的 SQL?

mysql - 使用 Sequelize 为 Node/Express 应用程序连接现有的 MySQL 数据库

javascript - 有关 promise 的详细信息;例子

postgresql - 如何统计分数高于 [userID] 的用户数?