Reactjs Apollo Client updateQuery在{}中缺少字段[fieldName]
在一个特定的查询subscribeToMore函数中,我似乎无法让查询获取新数据Reactjs Apollo Client updateQuery在{}中缺少字段[fieldName],reactjs,graphql,apollo,react-apollo,Reactjs,Graphql,Apollo,React Apollo,在一个特定的查询subscribeToMore函数中,我似乎无法让查询获取新数据 updateQuery: async (prev, { subscriptionData } ) => { const posts = [ ...prev.getPosts, subscriptionData.data.postCreated ]; const
updateQuery: async (prev, { subscriptionData } ) => {
const posts = [
...prev.getPosts,
subscriptionData.data.postCreated
];
const result = {
...prev,
count: posts.length,
getPosts: posts
}
return result;
}
这将导致以下错误:
{}中缺少字段getPosts
如果我记录结果,我会得到:
对象{getPosts:(3)[…],计数:3}
我不确定是什么原因导致了这种情况,因为在其他几个updateQuery调用中似乎没有问题。这一个似乎特别坏
有关问题:
export const POST_CREATED = gql`
subscription postCreated($authorId: ID!){
postCreated(authorId: $authorId){
id, title, createdAt, published
}
} `;
export const GET_POSTS = gql`
query getPosts($authorId: ID!){
getPosts(authorId: $authorId){
id, title, createdAt, published
}
} `;
这看起来有点奇怪——我不希望
count
位于根级别。问题中的实际查询是什么?只是一个getPosts查询,它返回[Post!]。我已确保帖子回复包含相同的信息。你能幽默我并编辑问题以包含实际的查询吗?我怀疑您返回的对象与您的实际查询不匹配,但如果没有看到queryDone,我无法确认这一点。有趣的是,即使我简单地编辑updateQuery以立即返回prev(这样数据是相同的),它仍然会导致相同的错误。是的,确实很奇怪。我相信,当您尝试写入缓存了查询但未写入的查询时,会抛出该错误。是否有任何突变也在更新缓存中的同一查询?我想知道你的代码中的writeQuery
是否把缓存搞砸了。