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!
}
在您的架构中定义。
我想使用 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!
}
在您的架构中定义。