search

Home  >  Q&A  >  body text

node.js - node在一个函数中连接完数据库拿到数据后,怎么把数据return出来?

严格来说这个跟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中文网2786 days ago286

reply all(1)I'll reply

  • 怪我咯

    怪我咯2017-04-17 15:40:18

    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.

    reply
    0
  • Cancelreply