amazon-web-services - 如何在放大中添加 filterInput 字段?
问题描述
我得到了以下架构(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: Admin @connection
}
现在我想获取员工,按管理员 ID 过滤掉。但是当我跑
API.graphql(
graphqlOperation(queries.listStaffs,
{
filter: {
admin: {
eq: adminId
}
}
}
))
它在下面抛出一个错误。
The variables input contains a field name 'admin' that is not defined for input object type 'ModelStaffFilterInput'
由于没有过滤器输入字段admin
。在 AppSync 控制台中,
input ModelStaffFilterInput {
id: ModelIDInput
name: ModelStringInput
and: [ModelStaffFilterInput]
or: [ModelStaffFilterInput]
not: ModelStaffFilterInput
}
在这种情况下,如何将过滤器输入字段添加到 GraphQL 架构中?你能提供任何例子amplify/backend/api/pjname/shema.graphql
吗?
解决方案
好的,我得到了这份工作。我所要做的就是明确地输入关系的关键。
type Admin @model @auth(rules: [{ allow:owner }]) {
id: ID!
name: String!
}
type Staff @model @auth(rules: [{ allow:owner }]) {
id: ID!
name: String!
admin: Admin! @connection
staffAdminId: ID! # this field is needed, for generating filterInput
}
然后amplify push
,生成的架构staffAdminId
:
input ModelStaffFilterInput {
staffAdminId: ModelIDInput
id: ModelIDInput
name: ModelStringInput
and: [ModelStaffFilterInput]
or: [ModelStaffFilterInput]
not: ModelStaffFilterInput
}
并运行查询
listStaffs(filter: {staffAdminId: {eq: "adminID"}})
这staffAdminId
已经在表中,所以除了 graphql 模式之外它不会影响。
我从:
https://github.com/aws-amplify/amplify-cli/issues/300#issuecomment-475786380
推荐阅读
- javascript - 如何使用 firebase 函数从 firestore 检索文档并从另一个 firestore 文档添加新数据?
- python - 如何在 Python 中更改浮点精度?
- javascript - 运行多个实例的网站干扰 (JavaScript)
- python - HTML单选按钮在分配值时截断空格后的所有字母
- c - xcb_poll_for_event,这个函数如何返回错误?
- excel - 如何在excel中使用office js查找和访问匹配的单元格/范围
- excel - 如何为 Excel 电子表格中的缺失行插入空白条目(与参考表相比)?
- graphql - 我可以在 GraphQL 查询中将变量设为可选吗?
- ansible - 在 Ansible 循环中使用 when 条件时需要帮助
- swift - 如何获取目标 UITraitCollection 以及目标 rect