Apollo SuperGraph跨子图突变关联实现方案咨询
跨SubGraph关联操作的可行方案
完全可以通过「先执行插入突变获取ID,再用该ID执行更新突变」的方式实现你的需求,这是处理跨SubGraph数据关联的常规做法,具体步骤如下:
第一步:调用Subgraph 1的插入突变,获取目标ID
执行Subgraph 1的创建记录突变,确保返回结果包含新生成的ID,示例代码:mutation CreateTargetRecord { createUser(input: {name: "test", email: "test@example.com"}) { id # 获取新创建记录的ID } }执行该突变后,从返回数据中提取出
id字段的值。第二步:使用获取到的ID,调用Subgraph 2的更新突变
将第一步得到的ID作为参数传入Subgraph 2的更新突变,完成关联操作,示例代码:mutation UpdateRelatedRecord($userId: ID!) { updateUserProfile(input: {userId: $userId, bio: "new bio content"}) { success } }把第一步拿到的ID赋值给变量
$userId,执行该突变即可完成更新。
如果需要保证两次操作的原子性(即要么都成功,要么都失败),可以在业务层添加错误处理逻辑:比如第一步突变失败则终止流程;第二步突变失败时,触发Subgraph 1的删除突变回滚数据。
内容的提问来源于stack exchange,提问作者rahul
相关产品推荐
相关产品推荐

