Как обьявить глобальную переменную?

Задача моего скрипта собрать с базы данных id записей
Но я столкнулся с проблемой - при выводе переменной мне приходит пустой массив
Как я понял, это все из-за того, что переменная локальная
Как ее сделать глобальной - не знаю
const sqlite3 = require('sqlite3').verbose();
let db = new sqlite3.Database('C:\\Users\\admin\\Desktop\\db.sqlite3')
var list_id = [];

function add_id(row) {
    list_id.push(row)

}

db.serialize(() => {
    db.each(`SELECT * FROM app_account`, (err, row) => {
        add_id(row.id)
    });
});

db.close()
  • Вопрос задан
  • 80 просмотров
Решения вопроса 1
Aetae
@Aetae Куратор тега JavaScript
Тлен
Нет, если бы переменная была локальная тебе бы приходила ошибка, а не пустой массив.

Проблема твоя в том, что операция запроса к базе данных - асинхронная, т.е. запрос и ответ разнесены во времени.

Сейчас твой код условно выглядит так:
1. Задали переменную, инициализировали её пустым массивом.
2. Послали запрос в базу данных.
3. Обратились к переменной - получили пустой массив.
4. Прошло некоторое время.
5. Пришёл ответ от базы данных - заполнили массив.

Изучи как работать с асинхронностью, без этого никуда.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 нояб. 2024, в 02:56
10000 руб./за проект
22 нояб. 2024, в 00:55
500 руб./за проект
21 нояб. 2024, в 23:30
300000 руб./за проект