如何从前端辅助函数组件外部调用Prisma函数?是否参与了Apollo和GraphQL?

问题描述

我有一个运行良好的JAMstack Web应用程序(使用RedwoodJS)。

但是,我的前端经常调用Google Maps API,这可能很昂贵。

所以我真的很想在Google Maps条款允许的时间内缓存API结果(即保存到服务器上的数据库)。

客户端缓存不足,因为不同的访问者仍然会因为获取其他访问者已经导致(并且本来可以存储)的结果而再次向我的API密钥收费。

我已经创建了一个数据库表和一个称为cachedQueries.ts的后端“服务”(使用prisma),它具有:

export async function getFromCacheOrFresh(key: string,getFresh: Function,expiresInSec: number): Promise<any> {
  const NowMoment = dayjs.utc();
  const NowStr = NowMoment.format(dbTimeFormatUtc);
  const cached = await getCachedQuery({ key,expiresAtCutoff: NowStr });
  console.log('getFromCacheOrFresh cached',cached);
  if (cached) {
    const cachedValueParsed = JSON.parse(cached.value);
    console.log('cachedValueParsed',cachedValueParsed);
    return cachedValueParsed;
  } else {
    const fresh = await getFresh();
    savetoCache(key,JSON.stringify(fresh),expiresInSec);
    return fresh;
  }
}

我已经证明该cachedQueries.ts服务可以正常工作,并且可以正确地保存到数据库中并从数据库中检索出来,因为我已经成功地将其用于可从后端(而不是从前端)调用的第三方API -结束)。

现在,我面临的挑战是使其也能够缓存前端第三方API查询

如何从前端调用getFromCacheOrFresh函数


我的应用程序的结构是:

  • 我有一个主页,可在其中创建一个空元素,并显示cell<div id="map"></div> <ScraperCell usaStateCountyCombo={getUsaStateCountyCombo(usaState,county)} />
  • 单元格的成功函数调用createMapAndAddMarkers
  • createMapAndAddMarkers首先创建地图(具有特定的中心位置和缩放比例),然后遍历地址数组,并为每个地址调用getGeocodeFromCacheOrFresh
  • 当前端调用geocode method时,如何实现getGeocodeFromCacheOrFresh来利用后端“服务”中的getFromCacheOrFresh函数

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)