Создание схемы с различными значениями вложенных ключей - PullRequest
0 голосов
/ 05 апреля 2020

Я не совсем уверен, как даже озаглавить это, но у меня проблема с получением ненулевого значения ... Я надеюсь, что кто-то может помочь мне и сказать мне, что я делаю неправильно. ..

API, который я извлекаю, возвращает следующий формат ...

{
    "countrytimelinedata": [
        {
            "info": {
                "ourid": 167,
                "title": "USA",
                "code": "US",
                "source": "https://thevirustracker.com/usa-coronavirus-information-us"
            }
        }
    ],
    "timelineitems": [
        {
            "1/22/20": {
                "new_daily_cases": 1,
                "new_daily_deaths": 0,
                "total_cases": 1,
                "total_recoveries": 0,
                "total_deaths": 0
            },
            "1/23/20": {
                "new_daily_cases": 0,
                "new_daily_deaths": 0,
                "total_cases": 1,
                "total_recoveries": 0,
                "total_deaths": 0
            }
         }
     ]
}

Моя проблема в том, что я не могу извлечь что-либо из массива timelineitems с тем, что есть в моей схеме

Моя схема следующая

gql`
  extend type Query {
    getCountryData: getCountryData
  }
  type getCountryData {
    countrytimelinedata: [countrytimelinedata]
    timelineitems: [timelineitems]
  }
  type countrytimelinedata {
    info: Info
  }
  type Info {
    ourid: String!
    title: String!
    code: String!
    source: String!
  }
  type timelineitems {
    timelineitem: [timelineitem]
  }
  type timelineitem {
    new_daily_cases: Int!
    new_daily_deaths: Int!
    total_cases: Int!
    total_recoveries: Int!
    total_deaths: Int!
  }
`;

Я надеюсь, что это правильное место, чтобы спросить об этом, и мне жаль, если я чего-то не понимаю по основам c.

Есть ли что-то лучшее, что я должен использовать?

Заранее спасибо

1 Ответ

1 голос
/ 05 апреля 2020

GraphQL не поддерживает возврат объектов с динамическими c ключами, поэтому невозможно представить ту же структуру данных в вашей схеме без использования собственного скаляра . Однако проблема использования пользовательского скаляра заключается в том, что вы теряете проверку типа данных, предоставляемую GraphQL. Вам лучше просто преобразовать данные, возвращаемые API, в формат, который может быть выражен в вашей схеме.

type CountryData {
  timelineItems: [TimelineItemsByDate!]!
}

type TimelineItemsByDate {
  date: String!
  newDailyCases: Int!
  newDailyDeaths: Int!
  totalCases: Int!
  totalRecoveries: Int!
  totalDeaths: Int!
}

Обратите внимание, что я преобразовал имена типов и полей в приведенном выше примере, чтобы отразить соглашения об именах. Кроме того, если API по какой-либо причине возвращает некоторые данные в виде массива, но когда-либо возвращает только один элемент в массиве, я просто преобразовал бы это в объект, а не сохранил бы его в виде списка в вашей схеме.

...