Mysql
 sql >> Baza danych >  >> RDS >> Mysql

nodejs express/routes i mysql

Uważam, że nie pozwalasz na nieblokujący charakter tych połączeń. Zmienna jest ustawiona na false, połączenie jest wywoływane, a następnie przechodzi w oczekiwanie na oddzwonienie. Natychmiast renderujesz odpowiedź, przed zakończeniem oddzwaniania.

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

Dlaczego otrzymujesz odpowiednią wartość w konsoli? Ponieważ ostatecznie wywołanie zwrotne jest wywoływane i wykonuje to, czego oczekujesz. Nazywa się to po res.render

To jest bardziej prawdopodobne, że kod, który chcesz:

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. Jak całkowicie usunąć MySQL 5.7 z systemu Windows?

  2. Wyświetl rozwijane menu w HTML z PHP

  3. MYSQL, bardzo powolne zamawianie przez

  4. Zmodyfikuj pole CSV podczas importu do mysql

  5. Pomocnik równoważny Doctrine 2 SUM()?