node.js - node在一个函数中连接完数据库拿到数据后,怎么把数据return出来?
PHP中文网
PHP中文网 2017-04-17 15:38:18
0
1
283

严格来说这个跟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()
})
PHP中文网
PHP中文网

认证高级PHP讲师

reply all(1)
刘奇

Encapsulate it with 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)=>{

});

The pseudo code is roughly similar to this.

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template