Я совершенно новичок в этих технологиях, и мне трудно обернуть голову вокруг этого, так что терпите меня. Итак, моя ситуация такова, что я развернул Hasura в Heroku и добавил некоторые данные, и сейчас пытаюсь реализовать некоторые функции, в которых я могу добавлять и редактировать определенные строки таблицы. В частности, я следовал за этим от Хасуры и этим от vue-apollo.
Я реализовал добавление и редактирование (что работает), и теперь хочу также отразить это в таблице, используя свойство update
мутации и обновляя кэш. К сожалению, здесь я заблудился. Я вставлю часть своего кода ниже, чтобы сделать мою проблему более ясной:
Мутация для добавления игрока (ADD_PLAYER_MUTATION
) (такая же, как в документации Хасуры, ссылки на которую приведены выше):
mutation addPlayer($objects: [players_insert_input!]!) {
insert_players(objects: $objects) {
returning {
id
name
}
}
}
Код для мутации в файле .vue
addPlayer(player, currentTimestamp) {
this.$apollo.mutate({
mutation: PLAYER_ADD_MUTATION,
variables: {
objects: [
{
name: player.name,
team_id: player.team.id,
created_at: currentTimestamp,
updated_at: currentTimestamp,
role_id: player.role.id,
first_name: player.first_name,
last_name: player.last_name
}
]
},
update: (store, { data: { addPlayer } }) => {
const data = store.readQuery({
query: PLAYERS
});
console.log(data);
console.log(addPlayer);
data.players.push(addPlayer);
store.writeQuery({ query: PLAYERS, data });
}
});
},
Я действительно не понимаю update
часть мутации. В большинстве примеров бит { data: { x } }
использует имя функции вместо x
, и я тоже так поступил, хотя на самом деле не понимаю, почему (по крайней мере, меня это смущает). При ведении журнала data
массив игроков регистрируется, но при ведении журнала addPlayer
undefined
регистрируется.
Я, вероятно, делаю что-то не так, что очень просто для других, но я явно не уверен, что. Возможно, мутация не возвращает правильную вещь (хотя я предполагаю, что в этом случае она не будет записывать undefined
), или, возможно, вообще ничего не возвращает. Это особенно сбивает с толку, так как игрок фактически добавляется в базу данных, так что это просто часть update
, которая не работает - плюс, большинство руководств / учебных пособий показывают то же самое без особых объяснений.