如何返回查询结果? MySQL Node.js

时间:2019-03-28 00:34:21

标签: javascript mysql node.js mysqljs

我正在使用https://www.npmjs.com/package/mysql上的mysql软件包

所以基本上我在文件中有此功能:

module.exports.listGames = (id) => {
  let query = 'SELECT * FROM test';
  if (id) {
    query += 'WHERE userid = ' + connection.escape(id);
  }

  connection.query(query, function(err, results) {
    if (err) {
      throw err;
    }
    console.log(results);
  });
}

我想以json格式返回这些结果

所以我可以在另一个文件中调用它:

function sendGames(req, res) {
    const games = db.listGames(req.query.game);
    res.json(games);
}

所以我的问题是,如何从该查询返回结果?

2 个答案:

答案 0 :(得分:0)

您可以

  1. 使用回调
module.exports.listGames = (id, cb) => {
  let query = 'SELECT * FROM test';
  if (id) {
    query += 'WHERE userid = ' + connection.escape(id);
  }

  connection.query(query, function(err, results) {
    if (err) {
      throw err;
    }
    cb(results);
  });
}

module.exports.listGames(12, (results) => {
console.log(results);
})
  1. 使用承诺
module.exports.listGames = (id) => {
  let query = 'SELECT * FROM test';
  if (id) {
    query += 'WHERE userid = ' + connection.escape(id);
  }
  return new Promise((resolve, reject) => {
    connection.query(query, function(err, results) {
      if (err) {
        throw err;
      }
      resolve(results);
    });
  })

}

module.exports.listGames(12).then(results => console.log(results)

您可以使用JSON.stringify对从mysql查询到JSON的响应进行编码。

答案 1 :(得分:0)

module.exports.listGames = (id) => {
  let query = 'SELECT * FROM test';
  if (id) {
    query += 'WHERE userid = ' + connection.escape(id);
  }

  connection.query(query, function(err, results) {
    if (err) {
      throw err;
    }
    return (results);
  });
}

声明javascript 异步函数并从此处调用该方法。

async function  sendGames (req, res) {
    var games = await db.listGames(req.query.game);
    res.json(games);
}