gpt4 book ai didi

javascript - 使用node-postgres执行查询时,aws lambda不返回任何内容

转载 作者:行者123 更新时间:2023-12-02 21:32:22 25 4
gpt4 key购买 nike

我有一个异步函数,它使用 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)
}
}

最佳答案

问题是您的 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);
}
}

关于javascript - 使用node-postgres执行查询时,aws lambda不返回任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60589564/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com