所有项目的Apollo客户端特定更新查询?

时间:2017-04-22 14:47:39

标签: reactjs graphql apollo react-apollo

我有两个具有以下关系的模型:

群组有很多 的链接

所以基本上我的初始查询是getAllGroups,它获取所有组及其链接。 我有一个只是创建链接的变异,更新我的UI的最有效方法是什么?

目前我有:

{{1}}

基本上我只想获取添加了链接的组,但是我需要指定哪个组。我该怎么做?

1 个答案:

答案 0 :(得分:0)

我已经弄明白了,在创建其他突变的同时,我发现了一些不同的解决方法:

选项1: 如果您可以访问缓存中当前模型的索引,则可以将其作为prop传递,然后在查询中使用它来定位已添加到的模型:

                updateQueries: {
                getAllGroups: (prev, {mutationResult}) => {
                    const newLink = mutationResult.data.createLink;
                    return update(prev, {
                        allGroups: {
                            [groupIndex]:
                              links: {
                                 $push: [newLink]
                              }
                        }
                    })
                }
            }

选项2:使用update而不是updateQueries,这样您就可以读取根查询的结果,在其上进行映射,然后附加新插入的数据。在此之后,您可以将其写入缓存。

                    update: (proxy, mutationResult) => {
                    const query = getAllGroups;
                    const data = proxy.readQuery({query});

                    data.allGroups.map((groupData) => {
                        if(groupData.id == group)
                            groupData.links.push(mutationResult.data.createLink);
                    });

                    proxy.writeQuery({
                        query,
                        data
                    })
                }