GraphQL / Graphene - выбор из нескольких таблиц - PullRequest
0 голосов
/ 11 июля 2019

У меня есть этот запрос, который проходит через мою таблицу BookModel и находит все вопросы для этой конкретной book_id:

query {
  allBooks {
    edges {
      node {
        id,
        questionMeta {
          edges {
            node {
              bookId
            }
          }
        }
      }
    }
  }
}

BookModel:

class BookModel(db.base):
    __tablename__ = 'books_book'
    id = Column(Integer, primary_key=True)
    question_meta = relationship(QuestionMetaModel)

QuestionMetaModal:

class QuestionMetaModel(db.base):
    __tablename__ = 'questions_questionmeta'
    id = Column(Integer, primary_key=True)
    question_id = Column(ForeignKey('questions_question.id'))
    book_id = Column(ForeignKey('books_book.id'))

Результат запроса следующий (сжатый):

{
  "data": {
    "allBooks": {
      "edges": [
        {
          "node": {
            "id": "1",
            "questionMeta": {
              "edges": [
                {
                  "node": {
                    "bookId": 1
                  }
                },
                ... (1000+ more)
              ]
           }
        },
        { ... }
      ]
   }
}

Проблема с этими данными заключается в том, что они возвращают большой массив в questionMeta для каждого идентифицированного вопросас книгой.Что мне действительно нужно, так это длина массива или, скорее, количество вопросов.

Вопрос: Вместо того, чтобы возвращать большой массив, как мне вернуть только целочисленное значение?

Что я хочу (идеальный вывод):

{
  "data": {
    "allBooks": {
      "edges": [
        {
          "node": {
            "id": "1",
            "questionCount": 1356
           }
        },
        {
          "node": {
            "id": "2",
            "questionCount": 649
           }
        }
      ]
   }
}
...