我正在使用AWS Lambda构建我的API。我决定采用整体式架构,以最大程度地减少冷启动。我正在使用express.js进行路由,并使用mysqljs库连接到我的数据库。该API位于不同的文件夹中:路径,控制器和模型:
my-app
├── index.js
├── controllers
├── models
└── routes
我正在使用无服务器框架和无服务器离线进行本地开发。
我遇到的一个问题是数据库连接池。而且我认为问题是因为无服务器脱机和lambda函数的行为方式不同,而且我无法完全理解。我经历了几种不同的方法。
当前是我在index.js
内的exports.handler
中创建池,然后将其传递到路由,然后将其传递到路由,再将其传递到控制器,该控制器将其传递到模型。当模型将返回给控制器时,我调用res.json()
和pool.end()
。
这在无服务器脱机状态下效果很好,但是当我从Lambda函数内部调用API时,第一次效果很好,但是第二次我得到Cannot enqueue Query after invoking quit
。我以为每个API调用都会是一个新的“调用”。