【问题标题】:aws lambda does not return anything when using node-postgres to execute a query使用 node-postgres 执行查询时,aws lambda 不返回任何内容
【发布时间】:2020-03-09 02:03:17
【问题描述】:

我有一个异步函数,它使用 pg 执行函数查询。它没有返回任何东西,我不确定这是否是我调用异步函数的方式是问题所在。 response_test 总是作为一个空的 json 对象返回

const pg = require('pg');
const Query = require('pg').Query;
const pool = new pg.Pool();

const response = {...my format for response..}

module.exports.login = (event, context, callback)=> {

     try{

            var client = new pg.Client(conn);
              client.connect();
              var query = "select a_function_that_returns_1_row($1, $2)";
              var params = ['param1', 'param2'];
              var reponse_test = get_token(query, params);

              client.end();

            response.body = JSON.stringify(
                {
                    reponse_test
                }
            )

            callback(null, response);
        } catch(err){
            serverError.body = JSON.stringify({
                error: err
            });
            callback(null, serverError);
        }
}

async function get_token(query, params){
    try {
        const res = await pool.query(query, params);
        return res.rows[0];
      } catch (err) {
        console.log(err.stack)
      }
}

【问题讨论】:

    标签: javascript node.js async-await node-postgres


    【解决方案1】:

    问题是您的 get_token 方法是异步的,但您在调用时没有等待它。你也不需要回调。只需使您的 lambda 函数异步并返回响应。像这样的

    const pg = require("pg");
    const Query = require("pg").Query;
    const pool = new pg.Pool();
    
    const response = {};
    
    module.exports.login = async event => {
    
      try {
    
        const client = new pg.Client(conn);
        client.connect();
        const query = "select a_function_that_returns_1_row($1, $2)";
        const params = ["param1", "param2"];
        const reponse_test = await get_token(query, params);
    
        client.end();
    
        response.body = JSON.stringify(
          {
            reponse_test
          }
        );
    
        return response;
      } catch (err) {
        serverError.body = JSON.stringify({
          "error": err
        });
        return serverError;
      }
    };
    
    async function get_token(query, params) {
      try {
        const res = await pool.query(query, params);
        return res.rows[0];
      } catch (err) {
        console.log(err.stack);
      }
    }
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-24
      • 1970-01-01
      • 2020-05-17
      • 1970-01-01
      • 2012-04-14
      • 2014-03-16
      相关资源
      最近更新 更多