0

我正在使用来自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);
}

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

4

2 回答 2

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函数并从这里调用该方法。

async function  sendGames (req, res) {
    var games = await db.listGames(req.query.game);
    res.json(games);
}
于 2019-03-28T06:51:20.657 回答
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。

于 2019-03-28T00:39:23.067 回答