Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

nodejs express/rute dan mysql

Saya yakin Anda tidak mengizinkan sifat non-pemblokiran dari panggilan ini. Variabel disetel ke false, koneksi dipanggil dan kemudian jatuh melalui panggilan balik yang tertunda. Anda segera memberikan tanggapan, sebelum panggilan kembali selesai.

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

Mengapa Anda mendapatkan nilai yang tepat di konsol? Karena pada akhirnya panggilan balik dipanggil dan melakukan apa yang Anda harapkan. Itu hanya dipanggil setelah res.render

Ini kemungkinan besar kode yang Anda inginkan:

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. Menambahkan kunci asing ke tabel yang ada memberikan kesalahan 1050 tabel sudah ada

  2. Klausa GROUP BY dengan alias?

  3. Kolom Tergantung pada kolom lainnya

  4. koneksi pymysql pilih kueri dan fetchall return Tuple yang memiliki literal byte seperti b'25.00' daripada string seperti '25.00'

  5. Sisipkan beberapa baris dengan satu kueri MySQL