GraphQL массив / список переменных? - PullRequest
0 голосов
/ 24 марта 2020

Я хочу использовать массив / список в качестве переменной для мутации GraphQL, например:

Схема

type User {
  id: Id!
  email: String
  name: String
  bookmarks: [Bookmark]
}

type Mutation {
  updateUser(data: UserInput!): User
}

input UserInput {
  email: String
  name: String
  bookmarks: [Bookmark]
}

type Bookmark {
  vidId: String!
  timestamp: Int!
}

Мутация

mutation($email: String, $name: String, $bookmarks: [{vidId: String!, timestamp: Int!}]) {
  updateUser(data: {email: $email, name: $name, bookmarks: $bookmarks}) {
    email
    name
  }
}

Однако переменная синтаксис в мутации относительно массива закладок кажется неверным. Как передать массив как переменную GraphQL?

1 Ответ

1 голос
/ 24 марта 2020

GraphQL не поддерживает объявления анонимных типов (это {vidId: String!, timestamp: Int!} литерал), вы должны ссылаться на именованный тип (или список или ненулевой тип). Поэтому просто напишите

mutation($email: String, $name: String, $bookmarks: [BookmarkInput]) {
#                                                    ^^^^^^^^^^^^^
  updateUser(data: {email: $email, name: $name, bookmarks: $bookmarks}) {
    email
    name
  }
}

вместо того, чтобы

input BookmarkInput {
  vidId: String!
  timestamp: Int!
}

определено в вашей схеме.

...