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();
});
};
Может кому полезно будет.