Функция Azure, соединяющая SQL-сервер с пустой страницей в браузере

Я новичок в Azure Function и nodejs.

У меня есть очень простая функция Azure, которая подключается к серверу SQL с помощью функции Azure с nodejs. Я использую пакет с именем "tedious" для подключения к SQL-серверу, который размещен в Azure. Соединение работает нормально, так как я вижу результат на панели "Терминал" в коде Visual Studio, используя "context.log", когда вставляю URL " http://localhost:7071/api/Company" в мой браузер. Тем не менее, я ничего не вижу в своем браузере.

Я подозреваю, что "return" вызывается до завершения функции "queryDatabase", но я понятия не имею, как это сделать. Любой совет?

var Connection = require('tedious').Connection;  
var Request = require('tedious').Request;
var rows = [];
var config = {  
    userName: 'xxx',  
    password: 'xxx',  
    server: 'xxx',  
    options: {encrypt: true, database: 'xxx'}  
};  

var res = {};

module.exports = async function (context, req) {

    context.log('JavaScript HTTP trigger function processed a request.');
    var str = "";
    var connection = new Connection(config); 
    var querystatus = ""; 
    connection.on('connect', function(err) {  
        if(err) {
            context.log(err);
            //context.res = {body : err};
        } else {
            context.log("************Connected*****************");
            //context.res = {body : "Hello!"};  
            queryDatabase(connection);

            // context.res = {
            //     body: "Connected"
            // };
            //context.done();
        }
    });  
    context.log("************BEFORE context.res*****************");
    return {
        body:rows.toString()
    };


    function queryDatabase(connection) { 

        context.log("queryDatabase....started!"); 

        var request = new Request(
            "SELECT [id],[CompanyName] ,[CreatedDate]  FROM [dbo].[Company]",
            function(err, rowCount, rows)
            {
                context.log(rowCount + ' row(s) returned');   
                //context.log("Final Result:" + str);     
            }
        );        

        request.on('row', function(columns) {
            var row = {};
            columns.forEach(function(column) {
                context.log("%s\t%s", column.metadata.colName, column.value);
                row[column.metadata.colName] = column.value;
            });
            rows.push(row);
        });
        connection.execSql(request);

    }

};

1 ответ

Наконец, я удаляю "async " и добавляю context.done после того, как результат возвращается с сервера sql.

Другие вопросы по тегам