【发布时间】:2021-03-19 14:31:08
【问题描述】:
module.exports.handler = async (event, context, callback) => {
context.callbackWaitsForEmptyEventLoop = false;
let index = 0;
var client = mysql.createConnection({
host: process.env.rds_host,
user: process.env.rds_username,
password: process.env.rds_password,
port: process.env.rds_port
});
client.connect((err) => {
if (err) throw err;
console.log("Connected!");
});
let array = [];
let queries = ["query1", "query2", "query3", "query4"];
queries.map(q => {
array.push(getQueryResult(client, q));
});
Promise.all(array).then(result => {
console.log(result);
});
callback(null, {});
};
const getQueryResult = async (client, query) => {
return new Promise((resolve, reject) => {
client.query(query, function (err, result) {
if (err) {
reject(err);
}
resolve(result);
});
});
};
以上是我的 lambda 脚本,用于从 mysql 执行多个查询。问题是我没有从上面的脚本中得到任何结果和错误消息。请帮助我,我的脚本中缺少什么?
【问题讨论】:
-
等等 client.connect 你没有得到日志“连接!?
-
@rags2riches 是的,我还没有看到“已连接”。
-
这里有两个可能的问题:1) if 语句未评估,因为您使用的是“未定义”,而这意味着
undefined作为原始类型 2) 您不是await与数据库的连接 -
评估
typeof客户端的目的是什么?客户端未在 if 之前声明或分配,因此您希望它未定义...为什么如果需要? -
@rags2riches
undefined表示我不想像使用现有连接一样再次打开连接。在 promises.all 中,我们不需要将await放在那里。
标签: mysql node.js aws-lambda