我目前在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] : [])
);
});
}