【问题标题】:aws lambda function async connection queryaws lambda函数异步连接查询
【发布时间】:2019-02-14 22:08:05
【问题描述】:

我有一个函数连接到亚马逊 RDS 并从表中选择数据,但我的回调函数总是返回未定义的结果。我为这个功能使用了 async/await,但它不起作用。

我的问题:我需要函数 getOrder 必须完成并返回结果,然后调用回调。

我的功能:

'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 of function

【问题讨论】:

    标签: node.js amazon-web-services async-await aws-lambda


    【解决方案1】:

    为了让它工作,在你的getOrder async 函数中你应该返回一个promise。

    例如:

    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);
                });
            });
        });
    };
    

    【讨论】:

    • 非常感谢@giankotarola,它适用于您的代码。
    猜你喜欢
    • 2016-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-28
    相关资源
    最近更新 更多