Описание проблемы:
Я использую Sequalize ORM и мои облачные функции Firebase, предоставляя SequelizeConnectionError: подключайте ошибку ETIMEDOUT всякий раз, когда я запрашиваю мою базу данных MySql. Он отлично работает, когда функции работают на localhost через Firebase cli. Ниже приведен метод соединения Sequalize.
Фрагмент кода
var sequelize = new Sequelize('dbname, 'username', 'password', {
host: "host",
dialect: 'mysql',
define: {
paranoid: true
},
pool: {
max: 5,
min: 0,
acquire: 30000,
idle: 1
},
operatorsAliases: false})
Вышеупомянутый код работает идеально, когда функции выполняются через Firebase CLI Локально на порту 5000. Когда я развертываю его на Firebase и запускаю те же функции, я получаю ниже ошибок.
2018-06-23T11:31:53.887Z E app: Unhandled rejection
2018-06-23T11:31:55.187Z E app: SequelizeConnectionError: connect ETIMEDOUT
at Utils.Promise.tap.then.catch.err (/user_code/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:149:19)
at tryCatcher (/user_code/node_modules/sequelize/node_modules/bluebird/js/release/util.js:16:23)
at Promise._settlePromiseFromHandler (/user_code/node_modules/sequelize/node_modules/bluebird/js/release/promise.js:512:31)
at Promise._settlePromise (/user_code/node_modules/sequelize/node_modules/bluebird/js/release/promise.js:569:18)
at Promise._settlePromise0 (/user_code/node_modules/sequelize/node_modules/bluebird/js/release/promise.js:614:10)
at Promise._settlePromises (/user_code/node_modules/sequelize/node_modules/bluebird/js/release/promise.js:689:18)
at Async._drainQueue (/user_code/node_modules/sequelize/node_modules/bluebird/js/release/async.js:133:16)
at Async._drainQueues (/user_code/node_modules/sequelize/node_modules/bluebird/js/release/async.js:143:10)
at Immediate.Async.drainQueues (/user_code/node_modules/sequelize/node_modules/bluebird/js/release/async.js:17:14
)
Вам может быть разрешен пул максимального размера 1.
Это, скорее всего, потому, что ваш проект Firebase находится в бесплатном плане платежей Spark. С помощью Spark ваши облачные функции не могут выполнять исходящие подключения к службам, которые не полностью контролируются Google. Чтобы выполнить исходящие подключения, вам необходимо обновить свой проект до одного из планов платежей, таких как Blaze.