gpt4 book ai didi

node.js - Lambda Axios 发布到第二个 API 奇怪的异步行为

转载 作者:太空宇宙 更新时间:2023-11-03 21:50:48 25 4
gpt4 key购买 nike

我的 lambda 函数遇到问题。这是当前设置:

Lambda 向 API 发出 post 请求。 API 从 postgres 数据库获取数据并返回该数据。当我使用 Postman 或 lambda 函数的本地版本时,这是有效的。当我使用实际的 lambda 函数时,API 返回的数据为 null。

下面是一些代码片段:

lambda:

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 函数却没有?

提前致谢!

最佳答案

您的查询似乎返回 null,因为 req.body.var 不存在。您可以尝试将 lambda 函数更改为:

const axios = require('axios')

exports.handler = async (event) => {
let rows = await axios.post('http:/server/getData', {
var: event.var
})

if(rows.data.statusCode == 204){
//no data available
}
else{
data = rows.data.info
}
};

这基本上删除了额外的级别params并使req.body.var工作。

关于node.js - Lambda Axios 发布到第二个 API 奇怪的异步行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58747328/

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