我对这些技术完全陌生,并且难以理解它,所以请耐心等待。所以,我的情况是我已经在 Heroku 上部署了 Hasura 并添加了一些数据,现在我正在尝试实现一些功能,我可以在其中添加和编辑表格的某些行。具体来说,我从 Hasura 和vue-apollo一直在关注这个。
我已经实现了添加和编辑(有效),现在还想通过使用update
突变的属性并更新缓存来在表中反映这一点。不幸的是,这就是我迷路的地方。我将在下面粘贴一些代码以使我的问题更清楚:
添加播放器 ( ADD_PLAYER_MUTATION
) 的突变(与上面链接的 Hasura 文档中的突变相同):
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
不起作用的部分 - 另外,大多数指南/教程都显示相同的内容而没有太多解释。