将结果写入存储以供查询时出错。无法读取未定义的属性“查询”
Posted
技术标签:
【中文标题】将结果写入存储以供查询时出错。无法读取未定义的属性“查询”【英文标题】:Error writing result to store for query. Cannot read property 'query' of undefined 【发布时间】:2019-02-28 13:19:05 【问题描述】:在突变后编写要存储的查询时出现错误。突变有效,我能够阅读突变后的查询。当我将相同的查询写入存储缓存时,出现以下错误:
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 );
);
【问题讨论】:
【参考方案1】:您没有将新数据传递给writeQuery
。传递给writeQuery
的对象必须有一个名为data
的属性,其中包含新数据。此外,由于您的查询包含变量,因此您还需要包含该信息。
store.writeQuery(
query: APPROVERSLIST_QUERY,
data: newdata,
variables:
applicationId: row.applicationId,
,
);
请参阅the official docs 了解更多示例以及对这两种方法的更详尽说明。
【讨论】:
我已经花了 4 个小时来解决这个问题。非常感谢您回答这个问题!以上是关于将结果写入存储以供查询时出错。无法读取未定义的属性“查询”的主要内容,如果未能解决你的问题,请参考以下文章
尝试处理 /view/ajax 时出错:无法读取未定义的属性“长度”
[网络错误]:错误:使用 Apollo Link State 将结果写入存储以进行查询时出错
无法使用 Ngrx 读取未定义的属性“firebaseApp”