GraphQL 不考虑动态字符串数组有效字符串
GraphQL doesn't consider dynamic arrays of strings valid strings
我有一个手动输入时有效的查询:
queryName(where: { ids: ["1234567890123456789", "1234567890123456790"] }, offset: 0, max: 10) {
但是当在变量中传递相同的值时:
const idArr = ["1234567890123456789", "1234567890123456790"];
...
queryName(where: { ids: ${idArr} }, offset: 0, max: 10) {
我收到错误:
Uncaught GraphQLError: Syntax Error: Expected Name, found Int "1234567890123456789"
谁能解释一下?
像这样使用字符串插值将导致在您的字符串中插入以下值:
"1234567890123456789,1234567890123456790"
这不是有效的 GraphQL 语法,因此会导致语法错误。您应该使用 GraphQL variables 来提供动态值以及您的查询,而不是使用字符串插值:
query ($idArr: [ID!]!) {
queryName(where: { ids: $idArr }, offset: 0, max: 10) {
...
}
}
请注意,变量的类型将取决于使用它的参数,这取决于您实际查询的架构。
如何将变量与您的请求一起包含取决于您用来发出该请求的客户端,您的 post 并不清楚这一点。如果您使用 fetch
或其他一些简单的 HTTP 客户端,您只需将变量作为另一个 属性 包含在查询旁边,作为您发送到服务器的有效负载:
{
"query": "...",
"variables": {
...
}
}
我有一个手动输入时有效的查询:
queryName(where: { ids: ["1234567890123456789", "1234567890123456790"] }, offset: 0, max: 10) {
但是当在变量中传递相同的值时:
const idArr = ["1234567890123456789", "1234567890123456790"];
...
queryName(where: { ids: ${idArr} }, offset: 0, max: 10) {
我收到错误:
Uncaught GraphQLError: Syntax Error: Expected Name, found Int "1234567890123456789"
谁能解释一下?
像这样使用字符串插值将导致在您的字符串中插入以下值:
"1234567890123456789,1234567890123456790"
这不是有效的 GraphQL 语法,因此会导致语法错误。您应该使用 GraphQL variables 来提供动态值以及您的查询,而不是使用字符串插值:
query ($idArr: [ID!]!) {
queryName(where: { ids: $idArr }, offset: 0, max: 10) {
...
}
}
请注意,变量的类型将取决于使用它的参数,这取决于您实际查询的架构。
如何将变量与您的请求一起包含取决于您用来发出该请求的客户端,您的 post 并不清楚这一点。如果您使用 fetch
或其他一些简单的 HTTP 客户端,您只需将变量作为另一个 属性 包含在查询旁边,作为您发送到服务器的有效负载:
{
"query": "...",
"variables": {
...
}
}