orderBy: результаты запроса на обновление кэша - PullRequest
0 голосов
/ 13 сентября 2018

Работает над проектом Aapollo Graphcool

У меня работает обновление мутации, однако я хотел бы отфильтровать результаты, только фильтр результатов обновляется при обновлении страницы?

Глядя на cache.writeQuery (), в документах говорится, что нужно получить запрос и согласиться с ним, поэтому я думаю, поэтому он не фильтруется. Есть ли еще запрос после?

Вот код из моего компонента CreatePost

import React from 'react';
import gql from "graphql-tag";
import { Mutation } from "react-apollo";

const GET_POSTS = gql`
  {
    allPosts(orderBy: createdAt_DESC) {
      id
      title
      content
    }
  }
`;

const CREATE_POST = gql`
  mutation createPost($title: String!, $content: String!){
      createPost(title: $title, content: $content){
        id  
        title
        content
      }    
    }   
`;

const udpateCache = (cache, { data: { createPost } }) => {
    const { allPosts } = cache.readQuery({ query: GET_POSTS });
    cache.writeQuery({
        query: GET_POSTS,
        data: { allPosts: allPosts.concat([createPost]) }
    })
}

const CreatePost = () => {
    //vars for the input refs
    let titleInput
    let contentInput

    return (
        <Mutation
            mutation={CREATE_POST}
            update={udpateCache}
        >
           {createPost => ( //##form and onSubmit ##// ) }
        </Mutation>
    )
}

export default CreatePost

1 Ответ

0 голосов
/ 14 сентября 2018

Когда вы делаете свой writeQuery, вам также необходимо передать все используемые переменные, чтобы убедиться, что вы получаете ту же информацию из кэша.

const udpateCache = (cache, { data: { createPost } }) => {
    const { allPosts } = cache.readQuery({ query: GET_POSTS });
    cache.writeQuery({
        query: GET_POSTS,
        data: { allPosts: allPosts.concat([createPost]) },
        variables: { orderBy: /* input */ }
    })
}
...