Проблема синтаксиса Entity Association с запросами graphql - PullRequest
0 голосов
/ 22 ноября 2018

Я пытаюсь понять синтаксис запроса и мутации в 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
    }
  }
}

Буду признателен за любую помощь в этом.Моя цель - запросить автора и вернуть все сообщения, связанные с этим автором, а также создать мутацию сообщения, которая добавляет сообщение к автору.

1 Ответ

0 голосов
/ 22 ноября 2018

В одном из 2 вопросов, поэтому я отвечу в том порядке, в котором они были заданы.

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
}

Конечно, это только определение интерфейса.Нам нужно создать сообщение и связать его с автором внутри распознавателя.

Запрос на мутацию будет выглядеть так:

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

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...