在Apollo graphql服务器上的单个api调用中解决批处理查询

时间:2019-05-13 18:15:24

标签: graphql apollo apollo-server batching

我目前在apollo graphql客户端上使用类似调用的批处理。 因此,如果触发了相同的graphql查询但参数不同,它将向apollo-server发送单个调用。

但是在graphql服务器端,我想进行优化,以便有一个调用可以立即解决所有graphql查询。

Graphql服务器会调用api服务器,但对于每个批处理调用,不会一次解决所有查询。

我曾经使用data-loader来进行批处理,但它仅发送单个请求。

  genUserInfoDataLoader() {
    return new DataLoader(async (arr) => {
      logger.info(`---> UserInfoDataLoader Making calls for:${JSON.stringify(arr)}`);
      const leagueId = arr[0].split(':')[1];
      const UserIds = arr.map(a => a.split(':')[0]);
      const userInfoMap = await this.post('endpoint/user-info ', {
        userIds: UserIds.join(','),
        tourId,
      });

      return UserIds
        .map(
         userId => (userInfoMap[userId] ? userInfoMap[userId] : [])
        );
    });
  }

0 个答案:

没有答案