我理解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,该怎么办?我的钥匙需要是lat和long的独特组合,当呼叫我的服务时,我需要将lat和long分开。
const key = `${latitude}|${longitude}`;考虑到我可以使用一个映射来查找基于键传递给我的服务的值,这样的用例有一个很好的模式吗?
发布于 2019-12-16 00:57:38
您可以传入一个非字符串值作为键,然后使用cacheKeyFn选项让DataLoader将键转换为适当的字符串表示形式。
为给定的加载键生成缓存密钥。当对象是键时非常有用,两个对象应该被认为是等价的。
实际缓存密钥的格式几乎不重要,只要两个相同的传入键导致相同的缓存键。这可能是对象的一个问题,其中两个相同的对象可以以不同的顺序拥有属性,从而产生不同的字符串键,除非您在字符串化时对属性进行特殊排序。不过,就坐标而言,这不应该是个问题。在您的例子中,假设您的坐标作为数组传入,我认为以下内容就足够了:
function cacheKeyFn (key) {
return key.toString()
}https://stackoverflow.com/questions/59348817
复制相似问题