不同的数据源如何解析GraphQL查询?
创始人
2025-01-08 19:00:26
0

可以使用数据源解析器来解决这个问题。数据源解析器是一个在GraphQL执行过程中拦截请求并检索数据的中间件。我们可以将多个数据源绑定到同一个GraphQL Schema上,并使用数据源解析器来将查询分解成多个独立的请求并将结果合并。

以下是一个示例代码,演示如何将具有不同类型的数据源(数据库和Rest API)绑定到同一个GraphQL Schema上:

const { ApolloServer, gql } = require('apollo-server');
const { RESTDataSource } = require('apollo-datasource-rest');
const { Pool } = require('pg');

const typeDefs = gql`
  type Book {
    id: ID!
    title: String!
    author: String!
  }

  type Query {
    book(id: ID!): Book
  }
`;

class BookAPI extends RESTDataSource {
  constructor() {
    super();
    this.baseURL = 'https://myrestapi.com/';
  }

  async getBook(id) {
    return this.get(`book/${id}`);
  }
}

const resolvers = {
  Query: {
    book: async (_, { id }, { dataSources }) => {
      const [apiData, dbData] = await Promise.all([
        dataSources.bookAPI.getBook(id),
        dataSources.db
          .query('SELECT * FROM books WHERE id = $1', [id])
          .then((res) => res.rows[0]),
      ]);
      return {
        id,
        title: apiData.title,
        author: dbData.author,
      };
    },
  },
};

const server = new ApolloServer({
  typeDefs,
  resolvers,
  dataSources: () => ({
    bookAPI: new BookAPI(),
    db: new Pool({ connectionString: 'postgres://localhost:5432/mydb' }),
  }),
});

server.listen().then(({ url }) => {
  console.log(`� Server ready at ${url}`);
});

在上面的示例中,我们实现了一个包含一个book查询的GraphQL Schema,并使用ApolloServer将它们绑定在一起。我们将具有

相关内容

热门资讯

避坑细节!微乐脚本,wepok... 避坑细节!微乐脚本,wepoker软件安装包,透明教程(有挂教学);AI辅助机器人普及解说快速成为一...
专业讨论!福建天天开心辅助工具... 您好:福建天天开心辅助工具这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户...
重大发现!好友赣南新版本脚本,... 《重大发现!好友赣南新版本脚本,德普之星透视辅助软件激活码,力荐教程(了解有挂)》 好友赣南新版本脚...
科技通报!微乐陕西小程序破解器... 科技通报!微乐陕西小程序破解器,hhpkoer辅助挂是真的吗,分享教程(有挂方法)是一款可以让一直输...
分享个大家!同乡游辅助软件,h... 分享个大家!同乡游辅助软件,hh poker插件下载,wpk教程(新版有挂);暗藏猫腻!同乡游辅助软...
分享一款!广西老友玩友破解,w... 分享一款!广西老友玩友破解,wpk真吗,微扑克教程(有挂辅助)是一款可以让一直输的玩家,快速成为一个...
玩家交流!悟空大厅微信辅助,h... 玩家交流!悟空大厅微信辅助,hhpoker有作弊的吗,透明挂教程(有挂功能);AI辅助机器人普及解说...
科普攻略!wepoker智能辅... 科普攻略!wepoker智能辅助插件,wepoker可以透视码,技巧教程(存在有挂);wepoker...
一分钟揭秘!打哈儿小程序辅助,... 一分钟揭秘!打哈儿小程序辅助,智星德州辅助译码插件靠谱吗,必备教程(有挂教学);一、打哈儿小程序辅助...
一起来探讨!西兵互娱辅助插件a... 【福星临门,好运相随】;一起来探讨!西兵互娱辅助插件app,wepoker破解器,必备教程(有挂解密...