как вернуть список словаря в графене? - PullRequest
1 голос
/ 05 августа 2020

Я новичок в graphql и работаю с некоторыми наборами данных, которые возвращаются в виде списка словарей.

код фрагмента:

class Player(ObjectType):
    username = String()
    role = String()

class Game(ObjectType):
    players = List(Player)

Мне интересно, почему приведенный ниже код не работа?

class Query(ObjectType):
        game_info = Field(Game, username=String(), role=String())
        
        def resolve_game_info(self, info):
            results =  [{
                        "username":"Malphite",
                        "role":"tank"
                        },
                        {
                        "username":"Teemo",
                        "role":"support"
                      }]
            output = []
            for res in results:
                 output.append(
                    Player(
                      username=res['username'],
                      role=res['role']
                    )
                  )

            return output

Как я запрашиваю в graphql:

query {
  game_info(username:"Teemo") {
    players {
      username
      role
    }
  }
}

Результаты вроде этого:

{
  "data": {
    "gameInfo": null
  }
}

Любая помощь будет очень признательна!

1 Ответ

2 голосов
/ 05 августа 2020

Проблема кажется в формате возвращаемых данных. Предположим, в вашем Game больше полей, а не только players. Невозможно включить эти поля в ваш формат возврата.

Вместо return output.

Попробуйте: return {'players':output}

...