sql >> Databáze >  >> RDS >> Mysql

nodejs express/routes a mysql

Věřím, že nepřipouštíte neblokovací povahu těchto hovorů. Proměnná je nastavena na false, spojení je voláno a poté projde čekajícím zpětným voláním. Okamžitě vykreslíte odpověď před dokončením zpětného volání.

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

Proč máte v konzoli správnou hodnotu? Protože se nakonec zavolá zpětné volání a provede to, co očekáváte. Je to jen voláno po res.render

Toto je pravděpodobně kód, který chcete:

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. vytváření funkce časového pásma ve webové aplikaci PHP

  2. Jak získat předchozí hodnotu pro hodnoty Null

  3. Zpracování více výsledků z uložené procedury pomocí SqlQuery

  4. SQL Server 2008 Časová razítka vložení a aktualizace řádků