Я совершенно новичок в этих технологиях, и у меня возникли проблемы с осознанием этого, так что терпите меня. Итак, моя ситуация такова, что я развернул Hasura на Heroku и добавил некоторые данные, а теперь пытаюсь реализовать некоторые функции, позволяющие добавлять и редактировать определенные строки таблицы. В частности, я следил за этим от Хасуры и this из 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
часть - плюс, большинство руководств / руководств показывают то же самое без особых пояснений.