Как передать запрос sql в резолверах Apollo GraphQl Server? - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь соединить GraphQl и MySql и не хочу использовать сложную библиотеку вроде sequelize ... Код моего преобразователя:

  const Query = {
  users: () => {
    connection.query('SELECT id, login FROM `users`', (error, results) => {
      if (error) throw error;
      return results;
    });
  },
};

Response 'undefined'. Все в порядке с подключением и ответом на сборку Apollo, если я не использую запрос к БД. Я понимаю, что соединение является асинхронной c функцией, и мне нужно где-то глубоко, но я проиграл эту битву ... (

Пожалуйста, объясните, как получить данные из БД, используя только mysql библиотеку?

1 Ответ

1 голос
/ 26 мая 2020

Вы должны заключить connection.query в обещание, см. Асинхронные преобразователи

Например,

function query(sql) {
  return new Promise((resolve, reject) => {
    connection.query(sql, (error, results) => {
      if (error) return reject(error);
      return resolve(results);
    });
  })
}

// ...
const findUsersSQL = 'SELECT id, login FROM `users`'
const Query = {
  users: () => query(findUsersSQL)
};
...