Как вернуть результаты запроса? Mysql nodejs - PullRequest
0 голосов
/ 28 марта 2019

Я использую пакет MySQL из https://www.npmjs.com/package/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 голосов
/ 28 марта 2019
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);
}
0 голосов
/ 28 марта 2019

Вы можете либо

  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);
})
Использовать обещание
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)

Вы можете закодировать ответ от запроса mysql в JSON, используя JSON.stringify.

...