aws лямбда-функция запрос асинхронного соединения - PullRequest
0 голосов
/ 10 сентября 2018

У меня есть функция подключения к Amazon RDS и выбора данных из таблицы, но моя функция обратного вызова всегда возвращает результат не определено. Я использовал async / await для этой функции, но она не работает.

Моя проблема: мне нужно, чтобы функция getOrder была завершена и возвращала результат, после этого вызова callback.

Моя функция:

'use strict';
let mysql = require('mysql');
let config = require('./config');
let pool  = mysql.createPool({
    connectionLimit : 10,
    host            : config.host,
    user            : config.user,
    password        : config.password,
    database        : config.database
});
exports.handler = async (event, context, callback) => {
    let result = {};
    try{
        let sql = "SELECT * FROM tbl_test WHERE deleted = ? ";
        result = await getOrder(sql,0);
    }catch (err){
        throw new Error(err);
    }
    console.log("-----Result: ",result);
    return callback(null, {body: JSON.stringify(result),statusCode:200});
};

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

        });
    });
};

Результат при запуске:

результат функции

1 Ответ

0 голосов
/ 10 сентября 2018

Чтобы все заработало, в вашей getOrder асинхронной функции вы должны вернуть обещание.

Ex:

let getOrder = async (sql, params) => {
    return new Promise((resolve, reject) => {
        pool.getConnection((err, connection) => {
            connection.query(sql, params, (err, results) => {
                if (err){
                    reject(err);
                }
                console.log("-----Query Done!");
                connection.release();
                console.log("-----Data: ", results);
                resolve(results);
            });
        });
    });
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...