Создание запроса API из соединения SQL (лямбда-функция)? - PullRequest
0 голосов
/ 06 ноября 2019

В лямбда-функции я пытаюсь запросить базу данных 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 и, следовательно, не получаю от него ответ об ошибке. Это синхронная / асинхронная проблема? Могу ли я назвать это по-другому? Спасибо за любую помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...