如何在Apollo GraphQl Server的解析器中传递sql查询?

问题描述 投票:-1回答:1

我尝试连接GraphQl和MySql,并且不想使用像sequelize这样的棘手的库...我的解析器代码:

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

响应“未定义”。如果我不使用对数据库的请求,则连接和Apollo构建响应都可以。我知道连接是异步功能,我必须深入那里,但是我输掉了这场战斗...(

请说明如何仅使用mysql库从数据库中获取数据?

javascript node.js graphql apollo-server
1个回答
1
投票

您应该用承诺来包装connection.query,请参阅Asynchronous resolvers

例如

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)
};
© www.soinside.com 2019 - 2024. All rights reserved.