Mysql
 sql >> база данни >  >> RDS >> Mysql

nodejs express/routes и mysql

Вярвам, че не допускате неблокиращия характер на тези обаждания. Променливата е настроена на false, връзката се извиква и след това пропада в очакване на обратно повикване. Веднага извеждате отговора, преди да завърши обратното повикване.

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

Защо получавате правилната стойност в конзолата? Защото в крайна сметка обратното извикване се извиква и изпълнява това, което очаквате. Извиква се просто след res.render

Това е по-вероятно кодът, който искате:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Превъртете в цикъл заявка за вмъкване в PHP

  2. Rails:Как да разделите заявка за писане/четене в главна/подчинена база данни

  3. оптимизиране на заявка с datediff() в mysql

  4. MySQL репликацията е двупосочна

  5. изберете няколко реда в един ред с резултати