具有数组类型的 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 变量准备相同类型的对象(当然,其结构与您的变异输入类型相匹配)。