NODE JS, SQLITE Выполнить код последовательно

Есть файл index.js:

console.log(db.db_select("LoremUserName"));

и файл bd.js:

module.exports.db_select = function(username){

    const sqlite3 = require('sqlite3').verbose();
    const db = new sqlite3.Database('db.sqlite3');
    var tempUser = "test";

        db.each("SELECT user FROM accounts LIMIT 1", (err, row) => {
            tempUser = row.user;
        });

    db.close();

    return  tempUser;
};

Проблема в том что console.log выводит "test", вместо "LoremUserName". (он достаётся из базы, но не успевает передаться в return. В итоге сначала отрабатывает console.log а потом с базы достаётся юзер, хотя нужно что бы всё выполнилось последовательно.


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

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

В итоге просто функцию обернул в промис и всё работает как надо index.js

db.db_select(username).then((tempData) => {
    console.log(tempData);
});

файл bd.js

module.exports.db_select = function(username){

    return new Promise((resolve, reject) => {
        const sqlite3 = require('sqlite3').verbose();
        const db = new sqlite3.Database('db.sqlite3');
        db.get("SELECT user FROM accounts WHERE user='"+username+"'", (err, row) => {
            resolve(row.user)
        });
        db.close();
    });

};

Может кому полезно будет.

→ Ссылка