Как буфер sql запрашивает результаты - PullRequest
0 голосов
/ 19 апреля 2020

Как console.log выводит запросы после всех sql запросов? Я использую mysql соединение. Теперь единственный pu sh (результаты) происходит после основного console.log (ключи). Я хочу буферизовать результаты отдельных запросов и после этого использовать их другими способами.

db.query(
    `INSERT INTO orders VALUES (?, ?, (SELECT SUM(currentPrice) FROM games WHERE games.id in (?)), 'pending', "?")`,
    [md5(Math.random() * 99999), email, ids, ids],
    async (error, results) => {
      if (error) {
        console.log(error);
        res
          .status(400)
          .json({ message: "При выполнении заказа возникла ошибка" });
      }
      if (results) {
        const keys = [];

        await ids.forEach(async (id) => {
          await db.query(
            "SELECT * FROM gameworld.keys WHERE gameId = ? and used = 0 LIMIT 1",
            id,
            async (error, results) => {
              if (error) {
                console.log(error);
              }
              if (results) {
                console.log(results);
                await keys.push(results[0]);
                await db.query(
                  "UPDATE gameworld.keys SET used = 1 WHERE id = ?",
                  results[0].id
                );
              }
            }
          );
        });

        await db.query(
          "UPDATE order SET status = 'delivered' WHERE email = ?",
          email
        );

        await console.log(keys);

1 Ответ

0 голосов
/ 19 апреля 2020

Вам нужна такая структура:

async function main () {
    //do all your queries here with await
    var res = [];
    var [rows] = await conn.query('SELECT * FROM table');
    res.push(rows);

    //all queries are done
    console.log(res);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...