代码之家  ›  专栏  ›  技术社区  ›  WitVault

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

  •  1
  • WitVault  · 技术社区  · 6 年前

    所以它只发送一个呼叫到 apollo-server 如果graphql的参数不同,则会激发相同的graphql。

    但在graphql服务器端,我希望进行优化,以便一次只调用一次解析所有graphql查询。

    我用过 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 回复  |  直到 6 年前