Прежде всего, я прошу прощения, если заголовок моего вопроса вводит в заблуждение.
Я создаю API с использованием шлюза API AWS, а тип интеграции - лямбда-функция.
Так что в основном в моем интерфейсе (React) есть текстовая область, где пользователь может вводить значения поиска, каждое значение в новой строке. Я беру входные данные из этой текстовой области, разделяю их на массив, преобразую в JSON и передаю его моей конечной точке API.
Моя конечная точка API передала это значение лямбда-функции. Задача лямбда-функции состоит в том, чтобы взять это значение JSON (массив), l oop через него, найти его в базе данных и вернуть соответствующие строки.
Приведенный ниже код должен объяснить, что я пытаюсь сделать.
exports.handler = async function(event, context) {
context.callbackWaitsForEmptyEventLoop = false;
var queryResult=[];
var searchbyArray = (event.searchby);
var len = searchbyArray.length;
for(var i = 0; i < len; i++) {
var sql ="SELECT * FROM aa_customer_device WHERE id LIKE '%"+searchbyArray[i]+"%'";
con.query(sql, function(err, result) {
if (err) throw err;
queryResult.push(result);
});
var formattedJson = JSON.stringify({finalResult:queryResult});
return formattedJson;
}
};
Думайте о приведенном выше коде как о псевдокоде, поскольку я пробовал разные способы достижения желаемого результата.
Например, не используя asyn c и используя что-то вроде:
exports.handler = function(event, context, callback) { //code goes here }
, что приводит к
Ошибка тайм-аута
Я довольно новичок в node.js (мир асин c функция и обещания). Может ли кто-нибудь помочь в правильном направлении о том, что я делаю неправильно и как это правильно?
Единственное, что правильно в этом коде, это то, что массив 'searchbyArray' содержит правильные значения, которые необходимо искать.
Я прочитал AWS документацию AWS лямбда-функции, используя node js, и все еще не мог понять, какой правильный способ сделать это.