graphql - 将结果写入存储以供查询时出错。无法读取未定义的属性 'query'

标签 graphql react-apollo apollo-client

在更改后写入要存储的查询时出现错误。突变有效,我能够读取突变后的查询。当我将相同的查询写入商店缓存时,出现以下错误:

index.js:2178 Error: Error writing result to store for query:
 query ($applicationId: Int) {
  vApplicationApprovalChainList(ApplicationId: $applicationId) {
    id
    approvalOrder
    approverId
    name
    applicationId
    __typename
  }
}

Cannot read property 'vApplicationApprovalChainList' of undefined
    at writeToStore.js:101
    at Array.forEach (<anonymous>)
    at writeSelectionSetToStore (writeToStore.js:97)
    at writeResultToStore (writeToStore.js:75)
    at InMemoryCache../node_modules/apollo-cache-inmemory/lib/inMemoryCache.js.InMemoryCache.write (inMemoryCache.js:99)

这是我的代码.. 突变和 store.readQuery 有效,但 store.writeQuery 给出了上述错误。提前感谢您的任何反馈。

APPROVERSLIST_QUERY = gql`
query ($applicationId:Int){
 vApplicationApprovalChainList(ApplicationId:$applicationId){
  id
  approvalOrder
  approverId  
  name
  applicationId  

  }
}

`;


 handleClick() {
        const { row, mutate} = this.props;
        mutate({
            variables: {
                id: row.id
            },
            update: (store, { data: { deleteApprover } }) => {

                const newdata = store.readQuery({
                    query: APPROVERSLIST_QUERY,
                    variables: { applicationId: row.applicationId }
                });
                console.log(newdata);
                newdata.vApplicationApprovalChainList = newdata.vApplicationApprovalChainList.filter(approver => approver.id !== deleteApprover.id);
                store.writeQuery({
                    query: APPROVERSLIST_QUERY, newdata });
                }
        });



    }

最佳答案

您没有将新数据传递给 writeQuery。传递给 writeQuery 的对象必须有一个包含新数据的名为 data 的属性。此外,由于您的查询包含变量,因此您也需要包含该信息。

store.writeQuery({
  query: APPROVERSLIST_QUERY,
  data: newdata,
  variables: {
    applicationId: row.applicationId,
  },
});

请参阅the official docs获取更多示例以及对这两种方法的更详尽解释。

关于graphql - 将结果写入存储以供查询时出错。无法读取未定义的属性 'query',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52489321/

相关文章:

reactjs - 如何使用react-adopt动态设置mutation中的变量?

react-apollo - Apollo Client 3 : query returns results in Chrome's Network tab, 但在我的应用程序中未定义

reactjs - React-apollo 突变 writeQuery 不更新 ui

react-apollo - Apollo + react : How do I use a proxy so client and graphql are on the same domain?

node.js - PRISMA:身份验证 token 无效:未提供 'Authorization' header

java - graphql java : global dataFetcher and dynamic object

reactjs - React Apollo 客户端查询抛出错误 "Invalid prop ` children` of type `array` supplied to `Query`, expected `function` "

graphql - 如何发送文件以响应graphql查询? (将csv文件从服务器发送到客户端)

graphql - @apollo/client , apollo-client 和 apollo boost 之间的区别

graphql - 我可以将 useSWR 与 apollo-client 一起使用吗?