Apollo存储在运行writeQuery后清除数据

时间:2017-05-16 08:00:30

标签: reactjs graphql apollo react-apollo apollo-client

我正在为我的项目使用apollo-graphql。最近我遇到了问题,我从 addSitesPage 添加了网站,但 SitesPage 没有显示最近添加的网站。所以我使用了 refetchQueries ,它运行良好,最近添加的网站显示,但因为它不是一个乐观的解决方案,所以我试图在运行变异后更新商店,但每当我更新它,它清除所有以前添加的网站和页面没有显示。但是当我刷新页面时,所有网站都会再次出现。我确信我的数据连接逻辑存在问题,这是我的更新,它也更新了商店

this.props.mutate({
    variables : { data : variables},
    update: (store, { data: { Site : { SiteCreate  }  } }) => {
       // Read the data from the cache for this query.
       const data = store.readQuery({query: SitesFetchQuery });
       data.viewer.sites.edges.push(SiteCreate);
       // After executing the below statement store clears all the data
       store.writeQuery({ query: SitesFetchQuery, data });    
     },
  });

突变查询:

mutation SiteSaveMutation($data: JSON!) {
    Site {
        SiteCreate(input: {data: $data}) {
            obj {
                id
                name
                active
                id
                siteTypeId
                ownerId
                location {
                    lat
                    lng
                }
            }
        }
    }
}

网站提取查询:

query SitesFetchQuery {
    viewer {
        sites(where:{active: true}) {
            edges {
                node {
                    id
                    name
                    image
                    siteType {
                        id
                        name
                        icon
                    }
                }
            }
        }
    }
}

0 个答案:

没有答案