AWS Lambda 函数异步连接查询



我有一个函数连接到 Amazon RDS 并从表中选择数据,但我的回调函数总是返回结果未定义。我为这个函数使用了异步/等待,但它不起作用。

我的问题:我需要函数getOrder必须完成并返回结果,然后调用回调。

我的职能:

'use strict';
let mysql = require('mysql');
let config = require('./config');
let pool  = mysql.createPool({
connectionLimit : 10,
host            : config.host,
user            : config.user,
password        : config.password,
database        : config.database
});
exports.handler = async (event, context, callback) => {
let result = {};
try{
let sql = "SELECT * FROM tbl_test WHERE deleted = ? ";
result = await getOrder(sql,0);
}catch (err){
throw new Error(err);
}
console.log("-----Result: ",result);
return callback(null, {body: JSON.stringify(result),statusCode:200});
};
let getOrder = async (sql, params) => {
pool.getConnection((err, connection) => {
connection.query(sql, params, (err, results) => {
if (err){
throw new Error(err);
}
console.log("-----Query Done!");
connection.release();
console.log("-----Data: ", results);
return results;
});
});
};

运行时的结果:

函数的结果

要让它工作,在你的getOrder异步函数中,你应该返回一个承诺。

前任:

let getOrder = async (sql, params) => {
return new Promise((resolve, reject) => {
pool.getConnection((err, connection) => {
connection.query(sql, params, (err, results) => {
if (err){
reject(err);
}
console.log("-----Query Done!");
connection.release();
console.log("-----Data: ", results);
resolve(results);
});
});
});
};

最新更新