我正在使用 nodejs 模板开发一些无服务器功能。我有一个连接到 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”库中使用了 Promise。我在处理程序中调用“完成”回调,并且在每种可能的情况下都应该有来自 Promise 的响应。
我看不出这有什么问题,为什么提出奇怪的请求是错误的。任何人都可以帮忙吗?
提前致谢!