Как из SQL-запроса достать данные в глобальные переменные

Я решил поизучать работу с базами данных SQL через JavaScript. У меня есть база данныъ TESTDB и таблица в ней profile. Я хотел с помощью select доставать кол-во строк и из этого получать id нового пользователя. Сначала подключил базу данных:

const mysql=require('mysql');
//config
const connection=mysql.createConnection({
    host:"localhost",
    user:"pmauser",
    database:"TESTDB",
    password:"password_here"
    
});

После чего с помощью SELECT-запроса нашел новый id:

const sql = `SELECT * FROM profile`;
var new_id;
connection.query(sql, function(err, results) {
    if(err) console.log(err);
    const res=results;
    new_id=res.length+1;
});

Тут все работает правильно, и если добавить в функцию console.log(new_id), то все выводит правильно. Но если в главной программе вызвать console.log(new_id), то либо выводит ошибку, что нет такой функции, либо выводит "undefined". Я так понял, что new_id - локальная переменная и ее надо сделать глобальной. Я пробовал global[new_id]=res.length - не помогло. Что делать?


Ответы (1 шт):

Автор решения: Nezerix

Оказалась проблема в асинхронном программировании. Требуется написать так:

const sql = `SELECT * FROM profile`;
var new_id;

connection.query(sql, async function(err, results) {
    if(err) console.log(await err);
    const res=results;
    new_id=res.length+1;
});
→ Ссылка