запрос graphql против сгенерированного быстрого запроса - PullRequest
0 голосов
/ 04 апреля 2020

Я выполняю этот запрос:

query GetCommentWithPostAndComments {
  getComment( id: "a-comment-id-1" ) {
    id
    content
    post {
      id
      title
      comments {
        items {
          id
          content
        }
      }
    }
  }
}

Что возвращает этот вывод? Так что это 1: m @ connection


{
  "data": {
    "getComment": {
      "id": "a-comment-id-1",
      "content": "A comment #1",
      "post": {
        "id": "a-post-id",
        "title": "Post Title",
        "comments": {
          "items": [
            {
              "id": "a-comment-id-1",
              "content": "A comment #1"
            },
            {
              "id": "a-comment-id-2",
              "content": "A comment #2"
            }
          ]
        }
      }
    }
  }
}

Но если я запускаю код, сгенерированный в API.swift, я получу только один комментарий:

let queryInput = GetCommentQuery(id: "a-comment-id-1")
appSyncClient?.fetch(query: queryInput, cachePolicy: .fetchIgnoringCacheData) { (result, error) in
       let json: JSONObject? = result?.data?.jsonObject
       let result = try! JSONSerialization.data(withJSONObject: json!, options: [])
}

Так как можно Я перевожу вышеуказанный запрос, чтобы вернуть все комментарии?

1 Ответ

0 голосов
/ 18 апреля 2020

Если вы используете старый iOS SDK (я не уверен, как он работает с новым), вам может потребоваться увеличить глубину автоматически создаваемого файла API.swift. Если вы запустите AMIFIIFE конфигурирование Codegen, вы можете увеличить эту глубину до 2 или 3, чтобы получить и эти вложенные значения. Затем вы можете снова запустить ampify codegen, и ваш файл API.swift должен содержать всю вложенную информацию для ваших запросов.

Однако, предупреждаем, что по мере усложнения вашей схемы ваш файл API.swift может стать действительно огромным с дополнительным вложением, и он автоматически генерирует все операции CRUD.

Другой вариант - создать другой файл (назовите его «customqueries.graphql» или что-то в этом роде) и поместить его в папку graphql вместе с query.graphql, mutations.graphql, et c. В этом файле вы можете написать пользовательские запросы и дать им пользовательские имена, например:

query GetCommentWithPostAndCommentsCustom($id: ID!) {
  getComment( id: $id ) {
    id
    content
    post {
      id
      title
      comments {
        items {
          id
          content
        }
      }
    }
  }
}

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

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