У меня проблемы с моей лямбда-функцией. Это текущая настройка:
Лямбда делает пост-запрос к API. API получает данные из базы данных postgres и возвращает эти данные. Когда я использую Postman или локальную версию своей лямбда-функции, это работает. Когда я использую реальную лямбда-функцию, API возвращает данные с нулем.
Ниже приведены некоторые фрагменты кода:
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
Когда я вызываю API из Почтальона, я получаю код состояния: 200 (данные доступны) .
Если я вызываю API с точно такими же данными из лямбда, я получаю statusCode: 204 (данные недоступны) .
Я считаю, что это какая-то проблема с асинхронной синхронизацией. Я не знаю, чем могут отличаться ответы от API ..
Возможно ли, что API направляет ответ обратно отправителю в течение некоторого времени, а не просто импульса? И начинается с потоковой передачи «нет данных» , а затем, через несколько миллисекунд «о, я нашел некоторые данные, вот они» ? И что почтальон ждет окончания потока, а лямбда-функция - нет?
Заранее спасибо!