如何在Amplify中为GraphQL关联字段新增filterInput过滤字段?
问题原因
你遇到的报错是因为@connection关联生成的外键默认是隐式创建的,不会暴露到自动生成的ModelStaffFilterInput过滤配置中,因此你无法直接通过关联对象admin进行过滤。
解决方案
你只需要在Staff模型中显式声明关联外键字段,并且在@connection指令中绑定该外键即可,修改后的完整schema.graphql配置如下:
type Admin @model @auth(rules: [{ allow:owner }]) { id: ID! name: String! } type Staff @model @auth(rules: [{ allow:owner }]) { id: ID! name: String! # 显式声明Admin关联的外键字段 adminId: ID! # 通过fields参数绑定外键,关联逻辑和之前完全一致 admin: Admin @connection(fields: ["adminId"]) }
该配置和你原有隐式外键的逻辑完全兼容,已有数据不需要做迁移调整。
后续操作
- 修改完schema后执行
amplify push部署更新,部署完成后自动生成的ModelStaffFilterInput就会新增adminId对应的过滤字段 - 将原有查询代码的过滤条件从
admin改为adminId即可正常使用:
API.graphql( graphqlOperation(queries.listStaffs, { filter: { adminId: { eq: adminId } } } ))
内容的提问来源于stack exchange,提问作者yozibak
相关产品推荐
相关产品推荐

