В лямбда-функции я пытаюсь запросить базу данных SQL и PATCH
эти данные к конечной точке API, используя библиотеку http
из npm. Это вызов стороннего API, а , а не другой лямбда-функции через API-шлюз.
У меня настроена функция http
, и я пытаюсь вызвать ее изнутри моегоСоединение SQL (например, после успешного выполнения запроса), но, похоже, оно не вызывается. Мои инстинкты говорят мне, что соединение SQL является синхронным, а функция http
пытается работать асинхронно, поэтому не выполняется?
function httpPATCH(query, callback) {
var options = {
host: 'mywebsite@example.com',
port: 443,
path: '/api/myendpoint',
method: 'PATCH',
headers: {"Authorizaion": authenticateUser("myuser@example.com", "xxxxxxxxx")},
body: {"active": false}
};
var req = http.request(options, res => {
res.setEncoding('utf8');
var responseString = "";
//accept incoming data asynchronously
res.on('data', chunk => {
responseString = responseString + chunk;
});
res.on('error', function(e) {
console.log(e);
});
//return the data when streaming is complete
res.on('end', () => {
console.log(responseString);
callback(responseString);
});
});
req.end();
}
// SQL Connection
sql.connect(config, (err) => {
if (err) {
console.log(err);
callback(err);
} else {
const req = new sql.Request();
req.query('EXEC mysproc @item_id = "1234"', (error, result) => {
if (error) {
console.log(error);
callback(error);
} else {
// call wa-api and post data here:
var query = 'this does nothing';
httpPATCH(query, (theResult) => {
console.log("sent : " + query);
console.log("received : " + theResult);
const myData = JSON.parse(theResult);
});
console.log(result);
sql.close();
context.succeed(result.recordset)
return JSON.stringify(result);
}
});
}
});
// SQL Error Response
sql.on('error', (err) => {
console.log(err);
callback(err);
});
SQL-запрос (SPROC) выполняется правильно, но я просто не могу правильно вызвать этот вызов API и, следовательно, не получаю от него ответ об ошибке. Это синхронная / асинхронная проблема? Могу ли я назвать это по-другому? Спасибо за любую помощь!