有没有办法在尝试调用缓存之前检查 Apollo 是不是缓存了数据?

Posted

技术标签:

【中文标题】有没有办法在尝试调用缓存之前检查 Apollo 是不是缓存了数据?【英文标题】:Is there a way to check if Apollo has data cached before trying to call the cache?有没有办法在尝试调用缓存之前检查 Apollo 是否缓存了数据? 【发布时间】:2020-08-05 21:33:24 【问题描述】:

在尝试从缓存中调用该数据的查询之前,我需要确定 Apollo 是否缓存了数据。

如果我们尚未调用 USER_QUERY,此代码将引发 "Invariant Violation: Can't find field ...... on object" 错误。但是我没有办法检查我们是否曾经调用过它。

const cachedData = client.readQuery(
   query: USER_QUERY,
   variables: queryVariables,
);

我的问题是我不知道如何在调用任何缓存之前检查我们是否缓存了数据。

【问题讨论】:

【参考方案1】:

您可以按照建议 here 和 here 将 client.readQuery 部分包装为 try catch ;)

try 
  const cachedData = client.readQuery(
     query: USER_QUERY,
     variables: queryVariables,
  );
 catch(e) 
  // maybe you can safely swallow the error

【讨论】:

以上是关于有没有办法在尝试调用缓存之前检查 Apollo 是不是缓存了数据?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在 Apollo Gateway 和联合服务之间添加缓存?

Apollo GraphQL,有没有办法在查询期间操作正在写入缓存的数据?

有没有办法在调用之前编译(即缓存)cupy RawKernel?

如何防止 Apollo 客户端查询在 IE11 中缓存?

有没有办法在递归调用之前检查可用的堆栈大小? (C#)

为啥我的 Apollo 缓存更新没有反映在我的查询中?