{}中的Apollo Client updateQuery缺少字段[fieldName]

时间:2019-10-05 23:14:44

标签: reactjs graphql apollo react-apollo

在特定查询的subscriptionToMore函数上,我似乎无法使查询获取新数据。

        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
        }
    } `;

1 个答案:

答案 0 :(得分:0)

遇到了同样的问题。 我修复了它,因为返回对象是错误的。 由于您只是将帖子添加到最后,因此应该可以:

updateQuery: async (prev, { subscriptionData } ) => {
        prev.getPosts.push(subscriptionData.data.postCreated)
        return prev;
    }