Bhe*_*zie 2 javascript typescript graphql dataloader
我了解 dataLoader 如何使用简单的键工作:
import DataLoader from 'dataloader';
import myService from './services/service';
export default () => new DataLoader((keys: any) => Promise.all(keys.map((key: string) => myService(key))));
Run Code Online (Sandbox Code Playgroud)
有使用复合键的好模式吗?
如果我需要使用纬度和经度之类的东西调用谷歌地图 api 怎么办?我的密钥需要是纬度和经度的独特组合,并且在调用我的服务时我需要拆分纬度和经度
const key = `${latitude}|${longitude}`;
Run Code Online (Sandbox Code Playgroud)
认为我可以使用映射来查找要根据键传递给我的服务的值,对于这样的用例是否有一个好的模式?
您可以传入非字符串值作为键,然后利用该cacheKeyFn选项让 DataLoader 将键转换为适当的字符串表示形式。
为给定的加载键生成缓存键。当对象是键并且两个对象应被视为等效时很有用。
实际缓存键的格式并不重要,只要两个相同的传入键会产生相同的缓存键即可。这可能是对象的一个陷阱,其中两个相同的对象可以具有不同顺序的属性,从而导致不同的字符串键,除非您在字符串化时专门对属性进行排序。不过,对于坐标来说,这不应该是问题。在您的情况下,假设您的坐标作为数组传入,我想以下内容就足够了:
new DataLoader(
batchLoadFn,
{
cacheKeyFn: (key) => { return key.toString() }
}
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3599 次 |
| 最近记录: |