Получить данные об авторе на основе книги author_id - PullRequest
0 голосов
/ 26 января 2020

У меня есть две таблицы базы данных:

books: id | title | author_id
authors: id | name

typeDefs:

const typeDefs = gql`
  type Author {
    id: ID!
    name: String!
  }

  type Book {
    id: ID!
    title: String!
    author_id: String!
    author: Author!
  }

  type Query {
    book(id: ID!): Book
    author(id: ID!): Author
  }
`

Resolvers:

const resolvers = {
  Query: {
    async book(parent, args) {
      const dbRes = await query('SELECT id, title, author_id FROM books WHERE id=$1', [args.id])

      return dbRes[0]
    },
    async author(parent, args) {
      const dbRes = await query('SELECT id, name FROM authors WHERE id=$1', [args.id])

      return dbRes[0]
    }
  }
}

Я могу сделать запрос на получение книги:

const queryBook = gql`
  query Book($id: ID!) {
    book(id: $id) {
      id
      title
      author_id
    }
  }
`
const { data } = useQuery(queryBook, { variables: { id: 1 } })

Но как мне сделать запрос на книгу с данными автора на основе author_id, как это?

const queryBook = gql`
  query Book($id: ID!) {
    book(id: $id) {
      id
      title
      author_id
      author {
        id
        name
      }
    }
  }
`

1 Ответ

1 голос
/ 27 января 2020

Вы должны написать собственный распознаватель для автора книги

  const resolvers = {
       Book: {
          author: (parent) => {
                   console.log(parent.author_id)
            return (from database or any where....);
          },
        },

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