Angular 具有数组类型的Graphql变异
我正在尝试编写一个变异查询,它与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":
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客户端请求中。我希望我理解你试图告诉我的内容。谢谢