Функции Azure context.log не работает внутри функции обратного вызова - PullRequest
0 голосов
/ 17 июня 2019

Я пытаюсь отладить функцию Azure, написанную на nodejs. Проблема в том, что context.log работает в некоторых случаях, но никогда не работал в функции обратного вызова. Я предоставляю пример кода для того же:

const mysql = require('mysql');
const config =
{
    host: 'xxxx.mysql.database.azure.com',
    user: 'xxxx@xxxx',
    password: 'xxxxx',
    database: 'xxxxx',
    port: 3306,
    ssl: true
};

let mysql_pool = new mysql.createPool(config);

module.exports = async function (context, mySbMsg) {
    // Following statement works
    context.log('JavaScript ServiceBus queue trigger function processed message', mySbMsg);



    mysql_pool.getConnection( (err, db_connection)=> {
                                    if (err) {
                                        if (db_connection) db_connection.release();
                                    }else{
                                        // Following statement doesn't works
                                        context.log("Connection established.");
                                        processData(db_connection);
                                    }
    })

    func1();
    function func1(){
        // Following statement works
        context.log('from func1');
    }

};

1 Ответ

1 голос
/ 18 июня 2019

Вы не должны смешивать асинхронные и обратные вызовы, выполнение вашей функции возвращается до вызова обратного вызова.Если вы удалите ключевое слово async из определения функции и добавите вызов context.done после вашего последнего оператора в блоке else, вы должны увидеть желаемый результат.В противном случае следует изменить код для использования и вернуть обещания, чтобы выполнение было ожидаемым.

...