初学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'啊。。。
求好心人解答,谢谢。。
解决方案
程序是异步执行的,query还没执行完就send了