Мне нужно перехватить некоторые данные с помощью запроса MySQL и использовать результат для создания и отправки по электронной почте сообщения с его результатами с помощью узла.
Я поместил код внутри функции, но вызов запроса по-прежнему остается асинхронным, поскольку результат никогда не возвращается до конца функции, а возвращаемая переменная всегда пуста.
Пробовал другой подход с async / await, но все равно выполнение кажется асинхронным
В моем следующем коде просто войти в консольный журнал до шага 3, шаг 4 mde независимо от того, что я пытаюсь сделать в конце вызова функции
async function querydb (utente){
console.log("sono in querydb");
var messageHTMLAllegati="";
var risultatoquery;
console.log("step 1");
var connection = mysql.createConnection({
host : process.env.IP_address,
user : process.env.nome_utente,
password : process.env.password,
port : process.env.port,
database : process.env.DB,
});
console.log("step 2");
const query = util.promisify(connection.query).bind(connection);
(async () => {
try {
console.log("step 3");
var result = await query('SELECT Link FROM Link_Foto where ID_Utente="' + utente + '"');
var i = result.length;
console.log("step 4");
var j ;
for (j=0; j < i; j++) {
messageHTMLAllegati +='<a href="' + result[j].Link + '">Immagine ' + (j+1)+ '</a><BR>';
console.log("print the link found in the DB and added to the text to be printed"+result[j].Link);
}
} finally {
connection.end();
}
})()
return messageHTMLAllegati;
}
Я ожидаю, что последняя переменная "messageHTMLAllegati" будет содержать некоторый текст плюс необходимые поля запроса, но она всегда будет пустой. В журнале я вижу, что переменная заполняется, но только после этого функция возвращается, поэтому текст, используемый для составления электронного письма, пуст из раздела БД