Я полагаю, что вы можете сделать это так: await должен дождаться завершения всей цепочки обещаний и получить объект, представляющий решенное или отклоненное обещание.Но имейте в виду, что экспорт также является асинхронной операцией, так что это может произойти до завершения функции.
Лучший способ работы с системой асинхронизации - использовать обратный вызов.Вам нужно экспортировать метод назначения обратного вызова, чтобы получить обратный вызов и вызвать его при асинхронном выполнении.
module.exports = pool.getConnection()
.then( async (conn) => {
return await conn.query("SELECT table_name FROM information_schema.tables WHERE TABLE_SCHEMA='SquadgoalsDB';")
.then((rows)=>{
for(let i=0; i< rows.length;i++){
tableNames.push(rows[i].table_name)
}
tableNames = []
if(tableNames.length == 0){
throw new Error("NO_TABLES_FOUND")
}
return conn.query("select DISTINCT(column_name) from information_schema.columns WHERE TABLE_SCHEMA='SquadgoalsDB'")
})
.then((rows)=>{
for(let i=0; i< rows.length;i++){
columnNames.push(rows[i].column_name)
}
if(columnNames.length == 0){
throw new Error("NO_COLUMNS_FOUND")
}
conn.end()
console.log("MariaDB connection works")
})
.catch((err) =>{
throw err;
conn.end()
})
}).catch(err =>{
console.log("not connected to mariadb due to error: " + err);
});
И в другом файле вы можете сделать:
(async function(){
let foo = await require("./codeabove");
console.log(foo);
})();