У меня есть объекты типа 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? Я хотел бы знать, как лучше всего сделать это с состоянием связи Аполлона.
Спасибо!


Вам нужно сделать это вручную, используя 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 })
}
}
}
также взгляните на эта часть документов