将对象作为参数传递给 GraphQL Mutation (graphql-request)
Passing Objects as Argument to GraphQL Mutation (graphql-request)
我在发送到后端的前端中有一个非常基本的 graphql 突变。我使用 graphql-request
上的 this code 作为指南。
它适用于原语:
const mutation = gql`
mutation EditArticle($id: ID!, $title: String) {
editArticle(id: $id, title: $title) {
id
}
}
`
现在我还希望能够改变有关文章的一些元数据,存储在文章内的 meta
对象中:
...,
title: "Hello World",
meta: {
author: "John",
age: 32,
...
}
所以我的问题是:当从前端发出请求时,如何使用 graphql-request 将非原始对象类型作为参数传递给突变?
我已经试过类似的东西了:
const Meta = new GraphQLObjectType({
name: "Meta",
fields: () => ({
id: { type: GraphQLID },
name: { type: GraphQLString },
age ....
}),
})
const mutation = gql`
mutation EditArticle($id: ID!, $title: String, $meta: Meta) { //??? I don't seem to get what goes here?
editArticle(id: $id, title: $title, meta: $meta) {
id
}
}
`
我也用 GraphQLObjectType
试过,但我想我在这里做错了(因为这是前端)。
PS:我看了,但我不明白/相信那里的解决方案可能不完整。
您需要在服务器端架构中定义输入对象类型,例如
input MetaInput {
name: String
author: String
release: Date
}
并在 editArticle
定义中使用它
extend type Mutation {
editArticle(id: ID!, title: String, meta: MetaInput): Article
}
那么你也可以在你的 mutation EditArticle
的客户端定义中参考 MetaInput
类型。
我在发送到后端的前端中有一个非常基本的 graphql 突变。我使用 graphql-request
上的 this code 作为指南。
它适用于原语:
const mutation = gql`
mutation EditArticle($id: ID!, $title: String) {
editArticle(id: $id, title: $title) {
id
}
}
`
现在我还希望能够改变有关文章的一些元数据,存储在文章内的 meta
对象中:
...,
title: "Hello World",
meta: {
author: "John",
age: 32,
...
}
所以我的问题是:当从前端发出请求时,如何使用 graphql-request 将非原始对象类型作为参数传递给突变?
我已经试过类似的东西了:
const Meta = new GraphQLObjectType({
name: "Meta",
fields: () => ({
id: { type: GraphQLID },
name: { type: GraphQLString },
age ....
}),
})
const mutation = gql`
mutation EditArticle($id: ID!, $title: String, $meta: Meta) { //??? I don't seem to get what goes here?
editArticle(id: $id, title: $title, meta: $meta) {
id
}
}
`
我也用 GraphQLObjectType
试过,但我想我在这里做错了(因为这是前端)。
PS:我看了
您需要在服务器端架构中定义输入对象类型,例如
input MetaInput {
name: String
author: String
release: Date
}
并在 editArticle
定义中使用它
extend type Mutation {
editArticle(id: ID!, title: String, meta: MetaInput): Article
}
那么你也可以在你的 mutation EditArticle
的客户端定义中参考 MetaInput
类型。