Функция 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.