Обновление локального состояния при создании и удалении ассоциаций в клиенте Apollo

У меня есть объекты типа student и team в моей схеме и таблица student_team, в которой хранятся записи об их отношениях. Для управления ими я использую следующие вызовы:

// to add a student team relationship
mutation CreateStudentTeam($studentId: UUID!, $teamId: UUID!) {
  createStudentTeam(
    input: { studentTeam: { studentId: $studentId, teamId: $teamId } }
  ) {
    student {
      id
    }
    team {
      id
    }
  }
}

// to remove a student team relationship
mutation DeleteStudentTeam($studentId: UUID!, $teamId: UUID!) {
  deleteStudentTeamByStudentIdAndTeamId(input: {studentId:$studentId, teamId:$teamId}) {
    student {
      id
    }
    team {
      id
    }
  }
}

// to view teams with students
query Teams {
    teams {
      nodes {
        id
        name
        students {
          nodes {
            id
            fullName
          }
        }
      }
    }
}

Мое приложение представляет данные, основанные на этих отношениях, в виде списков. Команде может быть представлен список студентов. Я немного смущен тем, как обновить локальное состояние после этих вызовов. Будет ли лучше всего просто повторить выборку данных с помощью запроса Teams? Я хотел бы знать, как лучше всего сделать это с состоянием связи Аполлона.

Спасибо!

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Что такое Apollo Client и зачем он нужен?
Что такое Apollo Client и зачем он нужен?
Apollo Client - это полнофункциональный клиент GraphQL для JavaScript-приложений, который упрощает получение, управление и обновление данных в...
1
0
88
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам нужно сделать это вручную, используя update prop:

graphql(YourMutation, {
  options: {
    update: (cache, result) => {
      const query = TeamsQuery
      const currentQueryData = cache.readQuery({query})
      const updatedData = //change your data regarding of the mutation
      cache.writeQuery({query, data: graphql updatedData })
    }
  }
}

также взгляните на эта часть документов

Другие вопросы по теме