My Firebase cloud functions giving SequelizeConnectionError: connect ETIMEDOUT error whenever I query my MySql DB

老子叫甜甜 提交于 2019-12-13 03:41:50

问题


Problem Description:

I am using Sequalize ORM and my Firebase cloud functions giving SequelizeConnectionError: connect ETIMEDOUT error whenever I query my MySql DB. It works fine when functions are running on localhost via Firebase cli. Below is the Sequalize connection method.

Code Snippet

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})

The above code is working perfect when functions are running via Firebase CLI Locally on port 5000. When I deploy it on Firebase and run the same functions I get below errors.

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:


This is most likely because your Firebase project is on the free Spark payment plan. With Spark, your Cloud Functions can't make outgoing connections to services that are not fully controlled by Google. To make outgoing connections, you'll have to upgrade your project to one of the payment plans, such as Blaze.

Read more on the Firebase pricing page.




回答2:


You might only be allowed a pool of max size 1.



来源:https://stackoverflow.com/questions/51001037/my-firebase-cloud-functions-giving-sequelizeconnectionerror-connect-etimedout-e

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!