首页 > 解决方案 > AWS Amplify API 错误 - 字段不是 Int 类型

问题描述

我正在尝试推送我的 AWS Amplify API 架构/创建资源,但它错误地说:

✖ An error occurred when pushing the resources to the cloud

managerId field is not of type Int

如果我在 Writer 类型上将 managerId 更改为 Int,错误就会消失,但我不想这样做。应该是身份证。知道这里有什么问题吗?

架构.graphql

type Writer implements Person 
  @model
  @searchable
  @key(name: "byManager", fields: ["managerId", "hourlyPay"])
  @auth(rules: [
    {allow: groups, groups: ["Admin"]},
    {allow: public, provider: iam, operations: [read]}
  ])
{
  id: ID!
  managerId: ID!
  name: String!
  hourlyPay: Float!
  manager: Manager! @connection(fields: ["managerId"])
}

type Manager implements Person 
  @model
  @searchable
  @auth(rules: [
    {allow: groups, groups: ["Admin"]},
    {allow: public, provider: iam, operations: [read]}
  ])
{
  id: ID!
  name: String!
  department: String
  writers: [Writer!]! @connection(keyName: "byManager", fields: ["id"])
}

谢谢!

标签: amazon-web-servicesgraphqlaws-amplifyaws-appsync

解决方案


我正在处理的一个 Android 项目中遇到了同样的问题。

我通过将下一个代码放在我创建的文件中来修复它app/src/main/graphql(我必须创建文件夹 graphql)。

/app/src/main/graphql/aws-directives.graphql

directive @connection(name: String, keyField: String, sortField: String, limit: Int) on FIELD_DEFINITION

然后,而不是使用@key,我只使用了这样的指令@connection

type Comment @model {
   id: ID!
   text: String!
   postId: Post @connection(name: "commentsByPost")
}


type Post @model {
   id: ID!
   comments: [Comment] @connection(name: "commentsByPost")
}

最后,当您创建评论时,您必须传递 postId。如果您执行查询以列出帖子及其评论,您将正确获得与每个帖子关联的评论。


推荐阅读