Как из 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 шт):
Оказалась проблема в асинхронном программировании. Требуется написать так:
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;
});