Graphql 即使目标对象存在,Apollo readQuery也会失败?
我正在打电话给readQuery。我收到一条错误消息:Graphql 即使目标对象存在,Apollo readQuery也会失败?,graphql,apollo,graphql-js,apollo-client,Graphql,Apollo,Graphql Js,Apollo Client,我正在打电话给readQuery。我收到一条错误消息: modules.js?hash=2d0033b4773d9cb6f118946043f7a3d4385825fe:25847 Error: Can't find field resolutions({"id":"Resolution:DHSzPa8bvPCDjuAac"}) on object (ROOT_QUERY) { "resolutions": [ { "type": "id", "id":
modules.js?hash=2d0033b4773d9cb6f118946043f7a3d4385825fe:25847
Error: Can't find field resolutions({"id":"Resolution:DHSzPa8bvPCDjuAac"})
on object (ROOT_QUERY) {
"resolutions": [
{
"type": "id",
"id": "Resolution:AepgCCio9KWGkwyMC",
"generated": false
},
{
"type": "id",
"id": "Resolution:DHSzPa8bvPCDjuAac", // <==ID I'M SEEKING
"generated": false
}
],
"user": {
"type": "id",
"id": "User:WWv57KsvqWeAoBNHY",
"generated": false
}
}.
…我这样称呼它:
<Mutation
mutation={CREATE_GOAL}
update={(cache, {data: {createGoal}}) => {
let id = 'Resolution:' + resolutionId;
const {resolutions} = cache.readQuery({
query: GET_CURRENT_RESOLUTION_AND_GOALS,
variables: {
id
},
});
}}
>
发布为阿波罗用户解决类似问题的答案: 删除
解析:
的前缀,查询应仅获取id
然后问题出现了,您的数据存储是如何填充的?
要从缓存中读取查询,查询需要在调用之前在远程API上使用完全相同的参数。这样,apollo就知道字段的结果是什么,并带有特定的参数。如果从未使用想要使用的参数调用远程端点,但知道结果会是什么,则可以通过实现缓存解析程序来绕过该问题并在本地解析查询。请看中的示例。在这里,商店包含一个图书列表(在您的例子中是
结果),通过简单的缓存查找可以解决单个图书id的查询问题。您是否在没有解析的情况下尝试过它:
,因为这似乎是阿波罗为每个id添加的前缀。使用与您进行查询时相同的id
。是的,我尝试了两种方法,在id中添加或不添加“Resolution:”。Resolution对象的类型名称是什么?可能改用readFragment:我通过readQuery查找的对象的类型名是“Resolution”。难道我不能单独通过readQuery找到它吗?@Herku,非常感谢。如果你想把你的评论作为答案发表,我会把它标记为已接受的答案。
<Mutation
mutation={CREATE_GOAL}
update={(cache, {data: {createGoal}}) => {
let id = 'Resolution:' + resolutionId;
const {resolutions} = cache.readQuery({
query: GET_CURRENT_RESOLUTION_AND_GOALS,
variables: {
id
},
});
}}
>
{
"data": {
"resolutions": [
{
"_id": "AepgCCio9KWGkwyMC",
"name": "testing 123",
"completed": false,
"goals": [
{
"_id": "TXq4nvukpLcqQhMRL",
"name": "test goal abc",
"completed": false,
"__typename": "Goal"
},
],
"__typename": "Resolution"
},
{
"_id": "DHSzPa8bvPCDjuAac",
"name": "testing 345",
"completed": false,
"goals": [
{
"_id": "PEkg5oEEi2tJ6i8LH",
"name": "goal abc",
"completed": false,
"__typename": "Goal"
},
{
"_id": "X4H4dFzGm5gkq5bPE",
"name": "goal bcd",
"completed": false,
"__typename": "Goal"
},
{
"_id": "hYunrXsMq7Gme7Xck",
"name": "goal cde",
"completed": false,
"__typename": "Goal"
}
"__typename": "Resolution"
}
],
"user": {
"_id": "WWv57KsvqWeAoBNHY",
"__typename": "User"
}
}
}