AWS Лямбда с использованием асинхронного кода возвращает NULL - PullRequest
1 голос
/ 15 февраля 2020

Этот вопрос является дополнительным вопросом, ссылка на другой вопрос - aws лямбда-функция asyn c запрос соединения

Я разрабатываю код сервера с использованием AWS лямбда и для проверки асинхронного соединения я использую тот же код, который предоставил Trung с улучшением от giankotarola, и вывод лямбда-функции происходит только при замене -

1. return callback(null, {body: JSON.stringify(result),statusCode:200});

с -

2. return result;

Также в следующей строке -

3. pool.getConnection((err, connection) => {

Выдает предупреждение: Expected Error to be handled

Я не могу понять, почему код в строке 1, упомянутый выше, не работает? И как обработать предупреждение в 3.

1 Ответ

1 голос
/ 15 февраля 2020

Первая проблема связана с тем, что функция использует async. С async функциями вы просто возвращаете результат. callback используется, когда вы не используете async.

Я считаю, что вторая проблема заключается в том, что err для этого вызова не обрабатывается. Для второго err есть обработчик, но не этот. По сути, этот код должен выглядеть следующим образом:

let getOrder = async (sql, params) => {
    return new Promise((resolve, reject) => {
        pool.getConnection((err, connection) => {
            if (err){
                reject(err);
            }
            else {
                connection.query(sql, params, (err, results) => {
                    if (err){
                        reject(err);
                    }
                    else {
                        console.log("-----Query Done!");
                        connection.release();
                        console.log("-----Data: ", results);
                        resolve(results);
                    }
                }
            });
        });
    });
};
...