具有数组类型的 Graphql 突变
Graphql Mutation with Array types
我正在尝试编写一个变异查询,它与 graphql 完美配合
mutation($project: ProjectsInput) {
NewProject(project: $project) {
name,
namespace,
environments{
env,
}}}
这些是查询变量
{"project": {
"name": "Pr1",
"namespace": "Pr2",
"environments":
[{"env": "rec"},{"env": "dev"}]
}}
这就是它的样子
graphql mutation
现在我正尝试在 angular 中使用 Apollo Client 来构建这个突变
createProject() {
this.apollo.mutate({
mutation: gql`
mutation($project: ProjectsInput) {
NewProject(project: $project) {
name,
namespace,
environments{
env,
}
`,
variables: {
project: {
name: "sth",
namespace: "sth2",
env: [
{env:"env1"},
{env:"env2"}
]
}
}
}).subscribe(data => {
console.log('New project created!', data);
}); }
但是我得到了 Http 失败响应,因为 Array.i 类型的变量 $env 想要传递一个数组作为 apollo 中查询的变量 client.I 没有问题字符串类型的变量但数组对象导致此错误。
NewProject(project:
表明您的 NewProject
突变需要一个 project
参数
将查询更改为
mutation($project: ProjectsInput) {
NewProject(project: $project) {
name,
namespace,
environments{
env,
}
并将整个对象传递给变量 project
在graphiql
中使用query variables
定义测试变量:
{
project: {
name: "sth",
namespace: "sth2",
environments: [
{env:"env1"},
{env:"env2"}
]
}
}
然后在客户端为 project
变量准备相同类型的对象(当然,其结构与您的变异输入类型相匹配)。
我正在尝试编写一个变异查询,它与 graphql 完美配合
mutation($project: ProjectsInput) {
NewProject(project: $project) {
name,
namespace,
environments{
env,
}}}
这些是查询变量
{"project": {
"name": "Pr1",
"namespace": "Pr2",
"environments":
[{"env": "rec"},{"env": "dev"}]
}}
这就是它的样子 graphql mutation 现在我正尝试在 angular 中使用 Apollo Client 来构建这个突变
createProject() {
this.apollo.mutate({
mutation: gql`
mutation($project: ProjectsInput) {
NewProject(project: $project) {
name,
namespace,
environments{
env,
}
`,
variables: {
project: {
name: "sth",
namespace: "sth2",
env: [
{env:"env1"},
{env:"env2"}
]
}
}
}).subscribe(data => {
console.log('New project created!', data);
}); }
但是我得到了 Http 失败响应,因为 Array.i 类型的变量 $env 想要传递一个数组作为 apollo 中查询的变量 client.I 没有问题字符串类型的变量但数组对象导致此错误。
NewProject(project:
表明您的 NewProject
突变需要一个 project
参数
将查询更改为
mutation($project: ProjectsInput) {
NewProject(project: $project) {
name,
namespace,
environments{
env,
}
并将整个对象传递给变量 project
在graphiql
中使用query variables
定义测试变量:
{
project: {
name: "sth",
namespace: "sth2",
environments: [
{env:"env1"},
{env:"env2"}
]
}
}
然后在客户端为 project
变量准备相同类型的对象(当然,其结构与您的变异输入类型相匹配)。