首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从MainCell在JAMstack RedwoodJS应用程序前端的成功功能中调用后端服务功能?

如何从MainCell在JAMstack RedwoodJS应用程序前端的成功功能中调用后端服务功能?
EN

Stack Overflow用户
提问于 2020-10-21 17:45:13
回答 1查看 85关注 0票数 0

我在用RedwoodJS

我的前端(他们称之为"web“"side")有一个HomePage.ts和MainCell.ts (以及其他文件),然后MainCell中的成功函数调用第三方API。

一切都正常。

但是,我现在想开始缓存来自第三方API的结果。

我创建了一个数据库表和一个名为cachedQueries.ts (使用Prisma)的后端“服务”,其中包括:

代码语言:javascript
复制
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服务可以工作,并正确地保存到数据库并从DB中检索。也就是说,对于可以从后端(而不是从前端)调用的任何第三方API,流都能很好地工作。

现在我的挑战是让它也能缓存前端第三方API查询.

如何从前端的getFromCacheOrFresh成功函数调用函数?

我一定对阿波罗、GraphQL、RedwoodJS、Prisma等人的关系感到困惑。

客户端缓存是不够的。我真的需要第三方API结果保存在我的服务器上的DB中。

EN

回答 1

Stack Overflow用户

发布于 2020-12-19 22:08:19

,我终于想出来了。

我创建了一个名为GeoCell的新单元格,并为GeoCell的每个函数(SuccessLoadingEmptyFailure)返回一个空字符串。

感觉很奇怪但很管用。

对我来说,不直观的是,我被要求使用JSX组件(因为阿波罗从不允许我在JSX组件之外查询或变异GraphQL ),但我不希望单元组件实际显示任何…。因为它在Success中所需要做的就是调用一个助手函数,该函数会影响由不同单元格创建的元素aleady (即,addMarkerAndInfoWindow会影响现有Google的div,但不会显示GeoCell实际所在的任何位置)。

正如https://stackoverflow.com/a/65373314/470749提到的,在红木社区论坛:思考服务模式,GraphQL,阿波罗,细胞等上有一个相关的讨论。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64469000

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档