sql >> Database teknologi >  >> RDS >> Mysql

nodejs express/routes og mysql

Jeg tror, ​​du ikke tager højde for disse opkalds ikke-blokerende karakter. Variablen er indstillet til falsk, forbindelsen kaldes og falder derefter igennem, mens der afventes et tilbagekald. Du afgiver straks svaret, før tilbagekaldet afsluttes.

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});
    });
);

Hvorfor får du den rigtige værdi i konsollen? For til sidst kaldes tilbagekaldet og udfører det, du forventer. Det kaldes bare efter res.render

Dette er mere sandsynligt den kode, du ønsker:

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. postgresql:datatype for md5-meddelelsessammendrag?

  2. Sådan eksporteres data fra Amazon DynamoDB til MySQL-server

  3. PHP Fatal fejl:Kald til udefineret funktion mssql_connect()

  4. Måder at vide, hvordan man håndterer databasekorruption i SQL Server