GraphQL array/list 变量?

GraphQL array/list variables?

我想使用 array/list 作为 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 变量传入?

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!
}

在您的架构中定义。