Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

nodejs express / route và mysql

Tôi tin rằng bạn không cho phép tính chất không chặn của những cuộc gọi này. Biến được đặt thành false, kết nối được gọi và sau đó chuyển sang trạng thái chờ gọi lại. Bạn ngay lập tức hiển thị phản hồi, trước khi cuộc gọi lại hoàn tất.

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

Tại sao bạn nhận được giá trị phù hợp trong bảng điều khiển? Vì cuối cùng cuộc gọi lại được gọi và thực hiện những gì bạn mong đợi. Nó chỉ được gọi sau res.render

Có nhiều khả năng là mã bạn muốn:

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. MySQL trigger:Cập nhật khi đạt đến một ngày giờ nhất định

  2. Kết hợp dữ liệu từ hai bảng nối khác nhau

  3. Cập nhật bảng đã tham gia qua SQLAlchemy ORM sử dụng session.query

  4. Kiểu dữ liệu MySQL INT (11) trong khi UNSIGNED INT (10)?

  5. lỗi nghiêm trọng 'stdio.h' Python 2.7.3 trên Mac OS X 10.7.5