GraphQL Query извлича данни само веднъж след мутация

Искам да извлека заявката userUnpurchasedCourses след извършване на мутацията addCourseToOrder, но не мога да направя това. След добавяне на един клас към поръчката, той извлича заявката userUnpurchasedCourses, но ако отново добавя курса към поръчката, тогава заявката няма да се изпълни.

Опитах се да изпълня заявката в тогавашния блок на мутация и също опитах заявките за повторно извличане, но проблемът със заявката за повторно извличане е, че не мога да получа резултата от заявката.

така определям мутацията

const Mutation = async (query, variables, refetch) =>
  client.mutate({
    mutation: gql`
      ${query}
    `,
    variables,
    refetchQueries: () => [
      {
    query: gql`
      ${refetch?refetch:query}
    `,
    variables
  }
]
  });

Тук използвах мутация като тази

let res = await Mutation(classes.addCourseToOrder(), {
          userId,
          id,
          orderId,
          amount,
        })
     if (res.data.addCourseToOrder) {
        this.props.getUserUnpurChasedCourses({id})
     }

getUserUnpurChasedCourses ще отговаря за стартирането на userUnpurchasedCourses.

Ако имате нужда от повече подробности, моля, уведомете ме

Благодаря предварително.


person Vinay Sharma    schedule 15.07.2019    source източник
comment
Не съм сигурен дали това помага, но обикновено ще се абонирате в края на мутацията. GraphQL използва наблюдаеми. .subscribe(result => { console.log('result.data in subscribe: ', result.data); ...   -  person Preston    schedule 15.07.2019
comment
не работи, тъй като не използвам apollo-angular и също така не съм включил никакви абонаменти в моята схема, така че и в двата случая няма да работи, но благодаря за отговора, ще се опитам да добавя абонаменти   -  person Vinay Sharma    schedule 16.07.2019
comment
Здравей @Preston, няма да намеря резултата от заявката за повторно извличане, но просто намирам решението на проблема. благодаря за усилията   -  person Vinay Sharma    schedule 16.07.2019
comment
Не забравяйте да публикувате вашето решение! :-)   -  person Preston    schedule 16.07.2019
comment
добре, публикувах решението.   -  person Vinay Sharma    schedule 17.07.2019


Отговори (1)


Докато наблюдавам проблема, установявам, че заявката се изпълнява всеки път след мутацията, но вместо да извлича данните от сървъра (мрежата), тя извлича данните от кеш паметта, поради което дори след като проверих раздела мрежа на конзолата на браузъра, не получаваше никаква заявка за него, което ме накара да не мога да определя проблема, но получавах резултата от предишния съхранен резултат, след което след много гугъл открих, че има начин да деактивирам извличането от кеш паметта, така че го опитах отново и отново, докато не го направя.

всичко, което направих, беше да променя заявката от това

export const Query = async (query, variables) =>
  client.query({
    query: gql`
      ${query}
    `,
     variables
  });

до това

export const Query = async (query, variables) =>
  client.query({
    query: gql`
    ${query}
   `,
   variables,
  fetchPolicy: 'network-only'
 });
person Vinay Sharma    schedule 17.07.2019