【发布时间】:2020-03-03 22:49:41
【问题描述】:
我的 lambda 函数有问题。这是当前设置:
Lambda 向 API 发出 post 请求。 API 从 postgres 数据库中获取数据并返回该数据。当我使用 Postman 或我的 lambda 函数的本地版本时,这是可行的。当我使用实际的 lambda 函数时,API 返回的数据为 null。
下面是一些sn-ps的代码:
λ:
const axios = require('axios')
exports.handler = async (event) => {
let rows = await axios.post('http:/server/getData', {
params: {
var: event.var
}
})
if(rows.data.statusCode == 204){
//no data available
}
else{
data = rows.data.info
}
};
API 路由器组件
var router = express.Router()
const Pool = require('pg').Pool
const mgmtdb = new Pool({ ... })
router.post('/getData', function(req, res){
database.query("SELECT info FROM table WHERE var=$1", [req.body.var], (error, results) => {
const rows = results.rows
if (error) {
throw error
}
let status = rows.length == 0 ? 204 : 200
var responseJSON ={};
responseJSON.statusCode = status;
responseJSON.info= rows[0] ? rows[0].info : null;
res.json(responseJSON);
})
})
module.exports = router
当我从 Postman 调用 API 时,我得到 statusCode: 200(数据可用)。
如果我使用来自 lambda 的完全相同的数据调用 API,我会得到 statusCode:204(无可用数据)。
我相信这是一些异步计时问题。我不知道 API 的响应有何不同..
API 是否有可能在一段时间内将响应流回给发起者,而不仅仅是一个冲动?首先是流式传输“没有可用数据”,然后在几毫秒后“哦,我找到了一些数据,就在这里”?那个 Postman 等待流完成而 lambda 函数没有?
提前致谢!
【问题讨论】:
-
能否分享一下lambda和API的全部功能?
-
@idoshamun 是的,我向两者都添加了更多代码
-
尝试在您的 API 中添加一些日志记录,以检查您从 Lambda 函数获得的变量。调试进程,因为表面上看起来不错
标签: node.js amazon-web-services asynchronous aws-lambda axios