sql >> Databasteknik >  >> RDS >> Mysql

nodejs express/routes och mysql

Jag tror att du inte tillåter den icke-blockerande karaktären hos dessa samtal. Variabeln är inställd på false anslutningen anropas och faller sedan igenom i väntan på ett återuppringning. Du ger omedelbart svaret innan återuppringningen slutförs.

module.exports = function(app){
    app.get('/register/check/u/:username', function(req, res){
        // you set the value of the output var
        var output = 'false';
        // this is a non-blocking call to getConnection which fires the callback you pass into it, once the connection happens.  The code continues on - it doesn't wait.
        pool.getConnection(function(err, conn) {
            query = conn.query('SELECT * FROM users WHERE username LIKE ?', [req.params.username]);
            query.on('error', function(err){
                throw err;
            });
            query.on('result', function(row){
                var output = 'true';
                console.log(row.email);
                console.log(output);
            });
           conn.release();
        });

        // you are getting here before the callback is called
        res.render('register/check_username', { output: output});
    });
);

Varför får du rätt värde i konsolen? För så småningom anropas återuppringningen och utför vad du förväntar dig. Det kallas bara efter res.render

Det här är mer troligt koden du vill ha:

module.exports = function(app){
    app.get('/register/check/u/:username', function(req, res){
        pool.getConnection(function(err, conn) {
            query = conn.query('SELECT * FROM users WHERE username LIKE ?', [req.params.username]);
            query.on('error', function(err){
                throw err;
            });
            query.on('result', function(row){
                var output = 'true';
                console.log(row.email);
                console.log(output);
                res.render('register/check_username', { output: output});
            });
           conn.release();
        });
    });
);



  1. JSON kodar MySQL-resultat

  2. Funktion kontra lagrad procedur i SQL Server

  3. Genomsnittlig floatinkonsekvens

  4. insert kommando nekad i mysql