GraphQL关联类型更新求助:两类场景的Mutation编写问题
GraphQL关联类型更新问题解答
1. 更新特定用户下特定问卷的OpenQuestions列表
你之前的写法错误在于:直接对User类型执行更新,但OpenQuestions是Questionnaire的字段,不属于User;同时where条件错误地将问卷id放在了用户的筛选条件中,无法正确定位目标问卷。
正确的做法是直接更新Questionnaire类型,通过关联的User字段定位到目标用户的指定问卷:
mutation { updateQuestionnaires( where: { id: "Project 1" User: { username: "Kilian" } } update: { OpenQuestions: [2, 3] } ) { questionnaires { id OpenQuestions User { username } } } }
说明:
where条件通过User: { username: "Kilian" }关联到目标用户,同时指定问卷id,确保只更新该用户下的对应问卷update块中直接设置OpenQuestions的新数组值
2. 更新特定用户下特定问卷中的特定答案
要更新指定的Answer,需要通过多层关联筛选定位:先找到属于目标问卷的Answer,而该问卷又属于目标用户,同时指定Answer的id。示例代码如下:
mutation { updateAnswers( where: { id: "目标Answer的ID" Questionnaire: { id: "Project 1" User: { username: "Kilian" } } } update: { # 根据需求修改需要更新的字段 answer: "新的答案内容" component: "更新后的组件名称" answered_at: "2024-05-20T12:00:00Z" } ) { answers { id answer component answered_at Questionnaire { id User { username } } } } }
说明:
where条件层层筛选:匹配Answer的id,所属Questionnaire的id,且该Questionnaire关联的User用户名是Kilian,确保只更新目标用户目标问卷下的指定答案update块中填写需要修改的字段及新值
内容的提问来源于stack exchange,提问作者Kilian Kramer
相关产品推荐
相关产品推荐

