aws appsync graphql "Expected JSON object for '$[filter]' but got a 'STRING' instead."

aws appsync graphql "Expected JSON object for '$[filter]' but got a 'STRING' instead."

我正在尝试根据 graphql 上 child 的 ID 过滤结果并收到以下错误:

"Expected JSON object for '$[filter]' but got a 'STRING' instead."

大部分代码由 aws amplify 生成。

架构

type Company {
    id: ID!
    name: String!
    disabled: Int
}

type Customer {
    id: ID!
    name: String!
    company: Company!
    disabled: Int
}

input ModelCustomerFilterInput {
    id: ModelIDFilterInput
    name: ModelStringFilterInput
    disabled: ModelIntFilterInput
    company: ModelCompanyFilterInput #added by me
    and: [ModelCustomerFilterInput]
    or: [ModelCustomerFilterInput]
    not: ModelCustomerFilterInput
}

input ModelCompanyFilterInput {
    id: ModelIDFilterInput
    name: ModelStringFilterInput
    disabled: ModelIntFilterInput
    and: [ModelCompanyFilterInput]
    or: [ModelCompanyFilterInput]
    not: ModelCompanyFilterInput
}

查询

query ListCustomers($filter: ModelCustomerFilterInput, $limit: Int, $nextToken: String) {
  listCustomers(filter: $filter, limit: $limit, nextToken: $nextToken) {
    __typename
    items {
      __typename
      id
      name
      company {
        __typename
        id
        name
        disabled
      }
      disabled
    }
    nextToken
  }
}

{"filter": {"company": {"id": {"eq": "example"}}}}

已经解决了我的问题。

我所做的是以公司包含客户的方式更改模式本身。 事实上,问题是架构设计不佳。

我真的很想在 graphql 中看到一个查找函数,但它可能不是为此设计的。