Javascript 当我使用Apollo时,对象数组转换为对象对象数组
在我们的项目中,我们使用Apollo客户端向GraphQL发送查询。奇怪的是,它将变量转换为对象的对象Javascript 当我使用Apollo时,对象数组转换为对象对象数组,javascript,graphql,apollo,Javascript,Graphql,Apollo,在我们的项目中,我们使用Apollo客户端向GraphQL发送查询。奇怪的是,它将变量转换为对象的对象 let variables = [{myField: "myVal"}]; graphql.mutate("mutate myFunction($data:[MyInputType]){ myFunction(myArg: $data){...blabla...} }", variables); 当我运行变异和检查请求头时,我看到我的变量被转换成对象的对象 {"0": {"myFie
let variables = [{myField: "myVal"}];
graphql.mutate("mutate myFunction($data:[MyInputType]){
myFunction(myArg: $data){...blabla...}
}", variables);
当我运行变异和检查请求头时,我看到我的变量被转换成对象的对象
{"0": {"myField": "myVal"}}
此方法是否强制变量在默认情况下为对象?是否可以使用GraphQL将对象数组作为参数发送?在执行查询时,GraphQL希望变量
是一个对象,其中键是变量名,值是相应的变量值。文档中使用的每个变量(您发送的整个查询)都必须在文档的操作定义旁边声明。例如,如果您有一个名为firstName
的变量,它是一个字符串
:
mutation SomeOperationName ($firstName: String) {
# your mutation here
}
您可以包含任意数量的变量:
mutation SomeOperationName ($firstName: String, $lastName: String, points: Int)
变量也可以是列表:
mutation SomeOperationName ($names: [String], points: Int)
但是,在所有这些情况下,传递给mutate
的变量的值仍然需要是一个对象:
{
names: ['Bob', 'Susan'],
points: 12,
}
在您的示例中,您只定义了一个变量,data
,您告诉GraphQL是MyInputType
的列表。您不能将myField
作为变量传入,因为您没有告诉GraphQL该变量存在。但是,如果myField
是MyInputType
上的一个字段,那么您的变量只需如下所示:
{
data: [
{
myField: 'someValue'
},
{
myField: 'someOtherValue'
},
],
}