Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 具有数组类型的Graphql变异_Angular_Graphql_Symfony4_Apollo Client_Graphiql - Fatal编程技术网

Angular 具有数组类型的Graphql变异

Angular 具有数组类型的Graphql变异,angular,graphql,symfony4,apollo-client,graphiql,Angular,Graphql,Symfony4,Apollo Client,Graphiql,我正在尝试编写一个变异查询,它与graphql完美结合 mutation($project: ProjectsInput) { NewProject(project: $project) { name, namespace, environments{ env, }}} 这些是查询变量 {"project": { "name": "Pr1", "namespace": "Pr2", "environments":

我正在尝试编写一个变异查询,它与graphql完美结合

mutation($project: ProjectsInput) {
  NewProject(project: $project) {
    name,
    namespace,
    environments{
      env,      
    }}}
这些是查询变量

{"project": {
   "name": "Pr1",
  "namespace": "Pr2",
  "environments": 

  [{"env": "rec"},{"env": "dev"}]


}}
这就是它的样子 现在我正试图在angular中使用Apollo客户端来构建这样的突变


    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);

    });  }
但是由于数组类型的变量$env,我得到了Http失败响应。我想在apollo客户端中将数组作为变量传递给查询。字符串类型的变量没有问题,但是数组对象导致了此错误。

NewProject(项目:
显示您的
NewProject
突变需要一个
project
参数

将查询更改为

mutation($project: ProjectsInput) {
  NewProject(project: $project) {
    name,
    namespace,
    environments{
      env,      
    }
并将一个完整的对象传递给变量
project

使用
图形ql中的
查询变量
定义测试变量:

{ 
  project: {
    name: "sth",
    namespace: "sth2",
    environments: [
      {env:"env1"},
      {env:"env2"}
    ]
  } 
}

然后在客户端为
项目
变量准备相同类型的对象(当然,结构与您的突变输入类型匹配)。

使用graphiql文档检查突变特征-可能是一个输入变量-将所有数据作为一个输入对象传递(匹配一个输入变量),使用
查询变量尝试graphiql
(以下查询)…然后使用代码(apollo客户端)感谢您的回复,实际上我尝试了两个输入变量,效果很好。问题是我使用数组列表类型进行堆栈。我希望动态持久化该对象数组。再次感谢您,先生,但这不是问题。查询效果很好。问题是数组“env”的大小不是静态的(一个项目有许多由管理员修复的环境).string变量不会引起问题。在这种情况下,当我从apollo请求中删除$env变量时,它可以正常工作,但当我添加数组时,我会收到一个错误。显示您的变异签名-来自graphiql…以及此变异中使用的输入类型定义我已编辑了此帖子。我要做的是向apollo clie添加一个对象数组nt request.regardsnothing已更改…只有我们知道输入类型名称;)
ProjectsInput
,仍准备一个对象,请先在graphiql中尝试(使用查询变量!!不要硬编码结构和传递子属性),然后在代码中重新创建我按照你告诉我的做了,我再次编辑了这篇文章。我现在使用的查询变量与图片中的一样(在文章中编辑)。问题实际上不在后端Api中,而是在apollo客户端请求中。我希望我理解你试图告诉我的内容。谢谢