无服务器与nodejs和mysql =>进程退出之前完成请求

我正在用nodejs模板开发一些无服务器function。 我有一个服务,连接到一个MySQL数据库并检索一些数据。 当我第一次打电话时,一切都很好,但是当我重复一遍时,我会收到一个“完成请求前退出的进程”错误消息。 如果我再次尝试同一个电话,我会收到数据。 所以这个服务在奇怪的调用上是正确的,并且在偶数调用上返回错误(有趣的是?)。 这是处理函数的代码:

module.exports.getAll = (event, context, done) => { deviceRepository.getAllDevices().then((response) => { done(null, { response }); }).catch((error) => { done(error); }); }; 

这是版本库函数的代码:

 const mysql = require('mysql'); const when = require('when'); const config = require('./config'); const conn = mysql.createConnection({ host: config.RDSHOST, user: config.RDSUSER, password: config.RDSPASS, database: config.RDSDB, port: config.RDSPORT }); module.exports.getAllDevices = () => { const deferred = when.defer(); conn.connect(); conn.query('SELECT * FROM device', (err, rows) => { if (err) { deferred.reject(err); } else { deferred.resolve(rows); } conn.end(); }); return deferred.promise; }; 

正如你所看到的,我使用'when'库的承诺。 我把处理程序中的“完成”callback称为“callback”,在每一种可能的情况下都应该有回应。

我看不出这有什么问题,为什么要把这些奇怪的请求弄错。 任何人都可以帮忙

提前致谢!

自己解决…

问题是,我正在使处理程序之外的createConnection(当我声明conn常量)。

在处理函数中移动createConnection声明可以在每个调用中按预期工作。

 const mysql = require('mysql'); const when = require('when'); const config = require('./config'); module.exports.getAllDevices = () => { const conn = mysql.createConnection({ host: config.RDSHOST, user: config.RDSUSER, password: config.RDSPASS, database: config.RDSDB, port: config.RDSPORT }); const deferred = when.defer(); conn.connect(); conn.query('SELECT * FROM device', (err, rows) => { if (err) { deferred.reject(err); } else { deferred.resolve(rows); } conn.end(); }); return deferred.promise; }; 

希望这可以帮助。 谢谢!