设置了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 app查询GraphQL?
答案 0 :(得分:4)
如果您尝试传递复杂选项,最好的方法是使用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中所概述的那样,将查询保持为完全静态字符串有很多很好的理由。