2

I have a function connect to amazon RDS and select data from a table, but my callback function always return result is undefined. I used async/await for this function but it does't work.

My problem: I need function getOrder must be finished and return a result, after that call to callback.

My function:

'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;

        });
    });
};

Result when run:

result of function

1 Answer 1

4

To get it works, in your getOrder async function you should return a promise.

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);
            });
        });
    });
};
Sign up to request clarification or add additional context in comments.

1 Comment

Thank so much @giankotarola, it works with your code.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.