如何在Amplify的GraphiQL或AppSync中添加带授权所有者的模拟数据
故障原因确认
你的判断完全正确,该故障就是因为创建数据时的身份和删除时的testUser身份不匹配导致的。
你配置的@auth所有者规则会自动为创建的资源绑定当前请求发起者的用户ID作为owner字段值,你用GraphiQL默认通用身份创建数据时,owner不会自动关联到testUser的ID,删除时的权限校验规则要求owner必须和当前登录用户ID一致,所以触发了报错里的条件表达式校验失败。
两种解决方法
方法1:通过GraphiQL认证弹窗配置(推荐)
就是你截图里的认证配置窗口,按以下步骤操作:
- 先获取testUser的所有者ID:报错里的
fd2a7758-f7ba-4d57-bdb0-e5346492就是testUser的ID,你也可以在前端登录testUser后执行await Auth.currentAuthenticatedUser(),返回结果里的sub字段就是所有者ID。 - 打开GraphiQL顶部的Auth设置弹窗,在
owner输入框填入上面拿到的testUser ID,保存配置。 - 之后再执行
createXYZmutation,生成的数据会自动绑定该ID作为owner,后续用testUser登录就可以正常删除。
方法2:直接在mutation中手动传入owner字段
你可以在创建数据的mutation参数里显式指定owner值,无需调整GraphiQL全局配置,示例代码如下:
mutation CreateTestXYZ { createXYZ(input: { # 填入其他需要的字段值 owner: "fd2a7758-f7ba-4d57-bdb0-e5346492" }) { id owner # 其他需要返回的字段 } }
执行后可以直接从返回结果里确认owner字段是否正确。
内容的提问来源于stack exchange,提问作者ezeYaniv
相关产品推荐
相关产品推荐

