AWS Lambda函数异步连接查询 [英] aws lambda function async connection query

查看:107
本文介绍了AWS Lambda函数异步连接查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个连接到Amazon RDS并从表中选择数据的函数,但是我的回调函数始终返回结果是不确定的.我为此功能使用了async/await,但是它不起作用.

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.

我的问题:在回调之后,我需要函数getOrder必须完成并返回结果.

My problem: I need function getOrder must be finished and return a result, after that call to 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;

        });
    });
};

运行时的结果:

函数结果

推荐答案

要使其正常工作,请在您的getOrder异步函数中返回一个promise.

To get it works, in your getOrder async function you should return a 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);
            });
        });
    });
};

这篇关于AWS Lambda函数异步连接查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆