无法在单个 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);
我正在使用 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);