apollo - Apollo 客户端:网络错误 {"type":"WriteError"}
问题描述
我正在接受Network Error {"type":"WriteError"}
我的阿波罗查询。查询在到达客户端时执行得很好。但是把它写到他的商店是有问题的。任何想法可能会出现什么问题?这是查询:
fragment BpmnProcessInstanceItemTask on BpmnTaskInstance {
id
dateStarted
dateFinished
task {
name
__typename
}
performer {
name
__typename
}
performerRoles
__typename
}
fragment BpmnProcessInstanceItem on BpmnProcessInstance {
id
status
process {
name
description
type
__typename
}
owner {
name
__typename
}
tasks {
...BpmnProcessInstanceItemTask
__typename
}
dateStarted
dateFinished
__typename
}
query BpmnProcessInstancesQuery($input: BpmnProcessInstancesInput!) {
bpmnProcessInstancesQuery(input: $input) {
...BpmnProcessInstanceItem
__typename
}
}
"
解决方案
我自己遇到了这个问题,并在这里找到了解决方案。发生这种情况是因为查询正在加载没有 id(或 id)的数据,然后无法与缓存中的现有数据合并。
采取以下示例查询:
{
viewer {
id
fullName
groups {
id
name
}
}
}
返回的数据将存储在缓存中,查看者一个条目,每组一个条目:
User:asidnajksduih6
Group:9p8h2uidbjqshd
Group:d9a78h92lnasax
如果后续查询如下所示:
{
viewer {
id
fullName
groups {
name
}
}
}
可能存在冲突,因为不清楚应该在缓存中更新哪些组(结果集将不包括组 ID)。
解决方案似乎是尽可能在查询中使用 id。这避免了合并问题,并提高了后续不相关查询命中缓存的机会。
以上描述了原因和解决方案。此问题的可能症状包括:呈现过时的数据,或者即使结果在您的缓存中也没有呈现任何数据。正如这里所指出的,这些错误是静默发生的,但是可以通过“查询”选项卡中的Apollo chrome 扩展程序看到它们。
推荐阅读
- ajax - 发送 ajax 发起的支付 laravel 时的问题
- javascript - 将文本放在 2 个输入框之间
- java - 当 apache common-compress-1.9.jar 在密码保护的 zip 文件的上下文中抛出 UnsupportedZipFeatureException 时?
- flutter - 如何在flutter StatefulWidget中使用provider?
- multithreading - Kubernetes 准入控制器如何处理多个同时的准入请求?
- android - 使用颤振进行 RFID 扫描 - Zebra 设备
- c++ - 字符“\0”与字符串“\0”
- html - 如何在 django 中隐藏 base.html 中的一部分 html 代码?
- google-colaboratory - Google colab CUDA 错误:没有可在设备上执行的内核映像
- javascript - 通过 Web 请求调用时“string.split 不是函数”,但在 Apps Script IDE 中按预期工作(已解决,但发布以供理解)