严格来说这个跟node没什么关系,是我不够了解回调函数。我想接受到get请求后引用一方法,在数据库中获得值后返回回来再send出去。
以前一直用的都是赋给一个全局变量,但这个肯定不是最好的办法啦
function select(id) {
var result = null;
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : 'root'
});
connection.connect();
connection.query("use mldn");
connection.query(
'SELECT * FROM emp WHERE empno = ' + id,
function (err, results, fields) {
if (err) {
throw err;
}
connection.end();
return results;
}
);
//下面是没用的
//return results;
}
router.get('/user',function(req,res) {
//我想在这里获得数据再传出去,但这样是失败的
res.send(select(req.query.userid));
res.end()
})
怪我咯2017-04-17 15:40:18
用Promise
封裝一下。
query(sql, ...args) {
let promise = new Promise((resolve, reject) => {
if (!sql) {
reject({ err: 'sql must be not empty !' });
}
this.mysql_connection.query(sql, args, (err, rows, fields) => {
if (err) {
reject(err);
} else {
resolve(rows);
}
})
});
return promise;
}
query(sql,args).then((data)=>{
res.send(data);
res.end()
}).catch((err)=>{
});
大致偽代碼就類似這樣的。