Я решил поизучать работу с базами данных 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 - не помогло. Что делать?
new_idобъявлена с помощьюvarвнутри функции. Поэтому она локальная для этой функции. Либо объявите её снаружи, либо уберите var. – Alexander Petrov Jul 17 '20 at 16:42res.length+1- нельзя так делать. Потому что после удаления части данных из таблицы вы можете получить потом айдишник, совпадающий с уже имеющимся. – Alexander Petrov Jul 17 '20 at 16:43