NODE.js com socket e MySql

estou com um problema com o node, acredito que deve ser algo relacionado a callback´s, porém não tenho certeza, mais enfim, meu problema se resuma basicamente em puxar os dados de um banco MySql, esses dados serão armazenados em uma variável chamada msg. Meu código completo é este:

        const express = require('express');         const path = require('path');         const app = express();         const server = require('http').createServer( app );         const io = require('socket.io')(server);         const mysql = require('mysql');          // conexao com o banco de dados          var con = mysql.createConnection({         host: "localhost",         user: "root",         password: "",         database: "dados_users"         });           app.use(express.static(path.join(__dirname,'public')));         app.set('views',path.join(__dirname,'public'));           app.engine('html',require('ejs').renderFile);         app.set('view engine','html');          app.use('/', ( request , res ) => {             res.render('index.html');         });          let msg =[];            io.on('connection', socket => {          //este select deve retornar as mensagens que estão no banco para a          //variavel msg         // con.connect(function(err) {         //     con.query('SELECT * FROM dados', function(err, rows, fields) {         //         if (err) throw err;         //           msg = rows;         //     });         // });          socket.emit('msg_existentes',msg);    //retorna dados earmazenados na variavel msg          socket.on('recebe_do_front', data => {            console.log(msg);          // con.connect(function(err) {         //     var sql = "INSERT INTO dados (nome, msg) VALUES ('"+data.nome+"', '"+data.msg+"')";         //     con.query(sql, function (err, result) {         //     if (err) throw err;         //         console.log("1 record inserted");         //     });         // });          msg.push( data );     //manter msg na section da pagina         socket.broadcast.emit('envia_para_usuario', data);   //retorna msg do canudo      }); }); server.listen(3001); 

A função que não esta fazendo a parte dela é a função de [ select ], esta abaixo:

   //este select deve retornar as mensagens que estão no banco para a    //variavel msg   con.connect(function(err) {        con.query('SELECT * FROM dados', function(err, rows, fields) {            if (err) throw err;                  msg = rows;        });     }); 

então é isso, quando é executado o programa, ele trás a variável msg vazia. Desde já Muito Obrigado!