Если вы пытаетесь обратиться к admins до момента завершения connection.query , вы получаете пустой массив, потому что в момент обращения к admins - admins еще пустой.
как выполняется ваш код :
выводится console.log(1);
начинается выполнение connection.query..... (оно асинхронно)
выводится console.log(2); connection.query. еще не завершился....
выводится console.log(admins); он пуст ибо, connection.query. еще не завершился....
выводится console.log(3); connection.query. еще не завершился....
выводится "query is finished!" - выполнение connection.query завершено
console.log(admins) - вернет полученные данные - выполнение connection.query завершено и admins наполнен данными
console.log(1);
connection.query('SELECT name FROM admin',(error, result, fields) => {
for(var i = 0; i < result.length; i++){
admins.push(result[i].name);
}
console.log('query is finished!');
console.log(admins); // здесь данные доступны
});
console.log(2);
console.log(admins); // здесь данные еще НЕ доступны
console.log(3);