Basi c JS вопрос о AWS лямбда-RDS + запрос DynamoDB в той же функции - PullRequest
1 голос
/ 24 февраля 2020

Я начинаю с AWS Службы и у меня есть вопрос, касающийся лямбда-функций. Я хочу написать функцию, которая использует как RDS, а затем DynamoDB. Я написал простую функцию, которая запрашивает RDS, и она отлично работает. Затем первым делом я создал массив ответов, который будет полным ответом (здесь я хочу поместить оба объекта ответа из БД). Затем я переместил обратный вызов успеха за пределы запроса de MySQL, потому что функция не заканчивается в этот момент, я хочу вызвать обратный вызов после вызова DynamoDB и отправки его объекта ответа в массив. Но когда я делаю это и проверяю функцию, ответ просто пуст. Не могли бы вы помочь мне с этим? Я думаю, что это глупая ошибка, но я не понимаю: (

exports.handler = (event, context, callback) => {
  let sendResult = [];
  //prevent timeout from waiting event loop
  context.callbackWaitsForEmptyEventLoop = false;
  const query = `SELECT * from Users`;
   pool.query(query, (error, results) => {
     sendResult.push(results[0]); // Insert the result in response object
     if (error) callback(error);
     // else callback(null, sendResult); 
     // I remove the callback from here because after this query I want something from dynamoDB
  });
  ////////////////////////////////
  // Here I put the dynamoDB query and add the response object to sendResult before calling callback
////////////////////////////////
  callback(null, sendResult); // At this point, this should contain RDS object but it doesn't and the Result is [] :(
};

Code

...