将数组发送到 graphQL 端点
sending an array to graphQL endpoint
graphQL 服务器已设置。当值被硬编码时,它可以正常工作。这是我的调用请求:
"query": "mutation{
createEvent(name: "+ name +", purpose: "+ purpose +", googleUserName: "+ googleUserName +", dateArray: "+ JSON.stringify(dateArray) +", attendees: [])
{
eventId
name
purpose
googleUserName
dateArray
attendees{
attendeeName
personalizedDateSelection
}
}
}"
这给出了错误:
{"errors":
[{"message":
"Syntax Error GraphQL request (1:88) Expected :, found Name \"dateArray\"\n\n1: mutation{createEvent(name: lakshman, purpose: test, googleUserName: Diwaakartg Ganesh, dateArray: [\"Wed, Nov 9th 2016\",\"Thu, Nov 10th 2016\",\"Thu, Nov 3rd 2016\",\"Wed, Nov 2nd 2016\"], attendees: [])
{eventId
name
purpose
googleUserName
dateArray
attendees{
attendeeName
personalizedDateSelection
}
}
}\n}]}
没有对齐错误。我这样做是为了提高可读性
但是,当对参数进行硬编码时,上述突变可以正常工作。我发现很难找到错误的原因。我已经尝试了 JSON.stringify(dateArray) 和 dateArray 单独。
或者是否有更好的方法从 react-redux 应用程序查询 GraphQL?
如果您尝试传递复杂的选项,最好的方法是使用 variables。这样,您就不必担心将任何内容格式化为查询字符串。
所以你会发送这样的请求:
{
"query": `
mutation CreateEvent(
$name: String!,
$purpose: String!,
$googleUserName: String!,
$dateArray: [String],
$attendees: [String]
) {
createEvent(
name: $name,
purpose: $purpose,
googleUserName: $googleUserName,
dateArray: $dateArray,
attendees: $attendees
) {
eventId
name
purpose
googleUserName
dateArray
attendees{
attendeeName
personalizedDateSelection
}
}
}
`,
"variables": {
"name": "...",
"purpose": "...",
"googleUserName": "...",
"dateArray": [...],
"attendees": []
}
}
如果您之前使用过 SQL,则相当于在查询中使用 ?
并单独传递参数。基本上,您不应该在应用程序中手动序列化和连接查询,因为变量是专门为这种情况设计的。
事实上,正如我们在 this blog post.
中概述的那样,有很多重要的理由让您的查询保持完全静态字符串
graphQL 服务器已设置。当值被硬编码时,它可以正常工作。这是我的调用请求:
"query": "mutation{
createEvent(name: "+ name +", purpose: "+ purpose +", googleUserName: "+ googleUserName +", dateArray: "+ JSON.stringify(dateArray) +", attendees: [])
{
eventId
name
purpose
googleUserName
dateArray
attendees{
attendeeName
personalizedDateSelection
}
}
}"
这给出了错误:
{"errors":
[{"message":
"Syntax Error GraphQL request (1:88) Expected :, found Name \"dateArray\"\n\n1: mutation{createEvent(name: lakshman, purpose: test, googleUserName: Diwaakartg Ganesh, dateArray: [\"Wed, Nov 9th 2016\",\"Thu, Nov 10th 2016\",\"Thu, Nov 3rd 2016\",\"Wed, Nov 2nd 2016\"], attendees: [])
{eventId
name
purpose
googleUserName
dateArray
attendees{
attendeeName
personalizedDateSelection
}
}
}\n}]}
没有对齐错误。我这样做是为了提高可读性 但是,当对参数进行硬编码时,上述突变可以正常工作。我发现很难找到错误的原因。我已经尝试了 JSON.stringify(dateArray) 和 dateArray 单独。
或者是否有更好的方法从 react-redux 应用程序查询 GraphQL?
如果您尝试传递复杂的选项,最好的方法是使用 variables。这样,您就不必担心将任何内容格式化为查询字符串。
所以你会发送这样的请求:
{
"query": `
mutation CreateEvent(
$name: String!,
$purpose: String!,
$googleUserName: String!,
$dateArray: [String],
$attendees: [String]
) {
createEvent(
name: $name,
purpose: $purpose,
googleUserName: $googleUserName,
dateArray: $dateArray,
attendees: $attendees
) {
eventId
name
purpose
googleUserName
dateArray
attendees{
attendeeName
personalizedDateSelection
}
}
}
`,
"variables": {
"name": "...",
"purpose": "...",
"googleUserName": "...",
"dateArray": [...],
"attendees": []
}
}
如果您之前使用过 SQL,则相当于在查询中使用 ?
并单独传递参数。基本上,您不应该在应用程序中手动序列化和连接查询,因为变量是专门为这种情况设计的。
事实上,正如我们在 this blog post.
中概述的那样,有很多重要的理由让您的查询保持完全静态字符串