【问题标题】:Entity Association syntax issue with graphql queriesgraphql 查询的实体关联语法问题
【发布时间】:2019-04-24 14:35:16
【问题描述】:

我正在尝试了解 graphql 的查询和变异语法。给定这个例子:

type Author {
  id: Int!
  firstName: String
  lastName: String
  posts: [Post]
}

type Post {
  id: Int!
  title: String
  author: Author
  votes: Int
}

type Query {
  posts: [Post]
  author(id: Int!): Author
} 

将帖子与作者相关联的查询应该是什么样的?这是连接发挥作用的地方还是别的什么?这是我试图解决问题但有效的尝试。

mutation createAuthor {
  createAuthor(input: {
    id: 123
    firstName: "Bob"
    lastName: "Smith"
  }) {
    id
    firstName
    lastName
  }
}

query listAuthors {
  listAuthors {
    items {
      id
      firstName
      lastName
    }
  }
}

mutation createPost {
  createPost(input: {
    id: 12345
    title: "Title"
    votes: 345
    author: {
      lastName: {
        contains: "Bob"
      }
    }
  }) {
    id
    title
    votes
    author {
      id
      firstName
      lastName
    }
  }
}

对此的任何帮助将不胜感激。我的目标是查询作者并返回与该作者关联的所有帖子,并创建一个将帖子添加到作者的帖子突变。

【问题讨论】:

    标签: graphql aws-appsync


    【解决方案1】:

    两个问题合二为一,所以我会按照问到的顺序来回答。

    1.返回与作者关联的所有帖子

    您的架构看起来正确。查询如下所示:

    query {
      author(id: 1) {
        id
        posts {
          id 
          title
        }
      }
    }
    

    2。创建帖子并附加给作者

    在你的例子中,如果你想公开一个接口来创建一个帖子,那么你必须在你的模式中公开一个突变字段

    例如:

    type Mutation {
      createPost(input: CreatePostInput): Post
    }
    

    如果您想在创建帖子的同时将其附加到作者,那么您可以添加 authorId 作为输入的一部分,这里我们只想将帖子附加到现有作者:

    input CreatePostInput {
      title: String
      authorId: ID!
      votes: Int
    }
    

    当然这只是接口定义。我们需要实际创建 Post 并将其链接到解析器中的 Author。

    变异查询将如下所示:

    mutation createPost {
      createPost(input: {
        title: "Title"
        votes: 345
        authorId: "authorId1" 
      }) {
        id
        title
        votes
        author {
          id
          firstName
          lastName
        }
      }
    }
    

    希望有帮助!

    【讨论】:

      猜你喜欢
      • 2019-06-27
      • 2021-04-21
      • 1970-01-01
      • 2020-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多