无法在单个 lambda 函数中编写多个查询

Unable to write multiple queries in a single lambda function

我正在使用 AWS API getaway 和 lambda 进行 API 开发。我正在使用无服务器 MySQL https://www.npmjs.com/package/serverless-mysql 用于 mysql 连接和操作的程序包。 但我无法执行多个查询。请检查以下代码。

显示错误 "Parsing error: Unexpected token connection"。

var sql_1 = 'Query 1';
let rows = await connection.query(sql_1);

rows.forEach(function (row) {

    var sql_2 = 'Query 2';
    let rows = await connection.query(sql_2); // I am refering id in sql2 from result of sql_1
});

我对你的代码感到困惑,因为你正在重新分配你正在迭代的变量,除了多个语法错误。

但我认为您的问题是您误解了如何正确使用异步 JavaScript。 ForEach 在继续之前不会等待您的查询完成。

更好的方法是使用 Promise.all() 之类的东西来异步等待您对 return 的所有查询。

let q1Rows = await query(...);

let otherQueries = Promise.all(q1Rows.map(async (row) => await query(row.someData)));
// otherQueries is now an array of all the returned queries in order

您可以使用 Promise await 编写多个查询。

var sql_1 = 'Query 1';
let rows = await connection.query(sql_1);

let resultTemp=[];
    await Promise.all(rows.map(async (row) => {
       var sql_2 = 'Query 2';
       let result = await connection.query(sql_2 );
            resultTemp.push(result);

     }));

 context.succeed(resultTemp);