使用Amplify生成自定义的GraphQL查询和类型信息的方法

对于本文的目标读者

    Web(React,Vueなど)でAmplify利用し、自動生成されるクエリでは足りなくなった

總結

    graphqlconfig.ymlのincludesに指定しているディレクトリにファイルを作成する

解释

我会以默认生成的模式为基础进行解释。

type Blog @model {
  id: ID!
  name: String!
  posts: [Post] @hasMany
}

type Post @model {
  id: ID!
  title: String!
  blog: Blog @belongsTo
  comments: [Comment] @hasMany
}

type Comment @model {
  id: ID!
  post: Post @belongsTo
  content: String!
}
    例として、ブログに投稿されている記事のコメントを取得したい場合
export const getBlogDetail = /* GraphQL */ `
  query GetBlogDetail($id: ID!) {
    getBlog(id: $id) {
      id
      name
      posts {
        items {
          id
          title
          createdAt
          updatedAt
          blogPostsId
          comments {
            items {
              id
              contents
            }
            nextToken
          }
        }
        nextToken
      }
      createdAt
      updatedAt
    }
  }
`;
    生成された型情報

请留意

amplify codegenした際に型生成される対象となるのは、

projects:
  [project]:
    schemaPath: amplify/backend/api/[project]/build/schema.graphql
    includes:
      - src/graphql/**/*.js
    excludes:
      - ./amplify/**
    extensions:
      amplify:
        codeGenTarget: typescript
        generatedFileName: src/API.ts
        docsFilePath: src/graphql
extensions:
  amplify:
    version: 3

请注意,这是指定文件的includes部分。
如果将扩展名更改为ts等,将不会生成任何类型,请注意。

广告
将在 10 秒后关闭
bannerAds