首页 > node.js用express连接MySQL出现了bug

node.js用express连接MySQL出现了bug

初学node,用express写了一个测试脚本想连接数据库查询数据。代码如下:

var express = require('express');
var app = express();


app.get('/hello', function (req, res) {
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
        host     : '121.42.209.162',
        user     : 'root',
        password : '这里是密码',
        database : 'hgb'
    });

    var obj;
    var isok='failed';
    connection.connect(function(err) {
        if (err) {
            console.error('error connecting: ' + err.stack);
            return;
        }
        console.log('connected as id ' + connection.threadId);
    });

    connection.query('SELECT * FROM `538`', function(err, rows) {
        if(err){
            console.log(err.code); // 'ECONNREFUSED'
            console.log(err.fatal); // true
        }
        isok='ok';
    });

    connection.end();

    res.send(isok);
});

var server = app.listen(3000, function () {
    var host = server.address().address;
    var port = server.address().port;

    console.log('Example app listening at http://%s:%s', host, port);
});

但是浏览器打开http://localhost:3000/hello后,显示的是

同时,xshell里面看到的日志是这样的:

说明数据库连接是成功的?!
可是按理说查询成功的话会执行回调函数也就是说isok会变成'ok'啊。。。
求好心人解答,谢谢。。


node是异步的啊,你的isok='ok';还没执行就执行了后面的res.send(isok);
你可以把输出放到else里面


程序是异步执行的,query还没执行完就send了


res.send和connection.query是异步执行的,你把res.send放到query的回调函数里面就行了。

【热门文章】
【热门文章】