GraphQL突变,在一个请求中接受动态大小和常用标量类型的数组
我需要能够创建一个用户并添加它最喜欢的电影(引用Movies集合的对象数组以及他的个人评级每个电影)在一个单一的请求。GraphQL突变,在一个请求中接受动态大小和常用标量类型的数组
的东西看起来是这样的(伪),其
var exSchema = `
type Mutation {
addUser(
name: String!
favMovies: [{ movie: String! #ref to movies coll
personal_rating: Int! # this is different for every movie
}]
) : User
}
...
`
什么是在单个请求这样做的graphql方式?我知道我可以通过多个突变/请求获得结果,但是我希望能够一次完成。
你可以传递一个数组这样
var MovieSchema = `
type Movie {
name: String
}
input MovieInput {
name: String
}
mutation {
addMovies(movies: [MovieInput]): [Movie]
}
`
然后在你的基因突变,你可以通过像
mutation {
addMovies(movies: [{name: 'name1'}, {name: 'name2'}]) {
name
}
}
没有测试代码中的数组,但你的想法
这将是如此酷,但当我更改'电影:字符串'到'电影:[MovieInput]'graphql抛出*错误:期望的输入类型*当然在此之前,我已经声明'类型MovieInput ' –
对不起,它是'输入MovieInput',更新 – octohedron
@octohedron非常感谢!我一直在试图弄清楚这一点。 – Woppi
将它们作为JSON字符串传递。我就是做这个的。
@Gazta我有同样的问题,你有没有找到一种方式来传递JSON数组作为一个字符串?你是如何逃脱它的? –
@EdmondTamas添加了解决方案 – octohedron
在具有'name'和'favMovies'的架构上定义一个[input type](http://graphql.org/learn/schema/#input-types)。让'addUser()'把这个类型的一个实例作为它的参数。 AFAIK,列表字段对输入类型有效。 – CommonsWare
是的,我必须尝试一下,我正在寻找一个更好的例子,虽然 – octohedron