GraphQL 本身并不直接执行 SQL,而是通过 resolver 函数将 GraphQL 查询转换为相应的 SQL 查询。因此,要同时执行多个 SQL 查询,需要在 resolver 函数中实现相应的逻辑。

一种常见的方法是使用 Promise.all() 函数,将多个 SQL 查询封装成 Promise 对象,然后同时执行这些 Promise 对象,等待所有 Promise 对象都完成后,将结果合并返回给 GraphQL 客户端。例如:

const resolvers = {
  Query: {
    getUsers: async () => {
      const [users, addresses] = await Promise.all([
        // 执行第一个 SQL 查询
        db.query('SELECT * FROM users'),
        // 执行第二个 SQL 查询
        db.query('SELECT * FROM addresses')
      ]);

      // 将两个查询的结果合并
      const result = users.map(user => {
        const address = addresses.find(addr => addr.user_id === user.id);
        return { ...user, address };
      });

      return result;
    }
  }
};

在上面的例子中,我们通过 Promise.all() 函数同时执行了两个 SQL 查询,并将它们的结果合并成一个新的数组,然后返回给 GraphQL 客户端。当然,具体的实现方式还要根据具体的业务需求和数据库结构进行调整

graphql 同时执行多个sql

原文地址: https://www.cveoy.top/t/topic/huAV 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录