我了解dataLoader如何使用简单的键:
import DataLoader from 'dataloader';
import myService from './services/service';
export default () => new DataLoader((keys: any) => Promise.all(keys.map((key: string) => myService(key))));
有没有使用组合键的好模式?
如果我需要使用lat和long之类的字符调用google maps API,我的键需要是lat和long的唯一组合,并且在调用服务时需要将lat和long分开
const key = `${latitude}|${longitude}`;
考虑到我可以使用Map来查找基于键传递给我的服务的值,对于这样的用例是否有一个好的模式?
1条答案
按热度按时间erhoui1w1#
您可以传入一个非字符串值作为键,然后利用
cacheKeyFn
选项让DataLoader将键转换为适当的字符串表示。为给定的加载键生成缓存键。当对象是键并且两个对象应该被认为是等价的时很有用。
实际缓存键的格式无关紧要,只要两个相同的传入键产生相同的缓存键。这可能是对象的陷阱,两个相同的对象可能具有不同顺序的属性,从而产生不同的字符串键,除非在字符串化时专门对属性进行排序。不过,对于坐标,这应该不是问题。在您的情况下,假设你的坐标是以数组的形式传入的,我想下面的代码就足够了: