如何解决GraphQL不将字符串的动态数组视为有效字符串
我有一个手动输入的查询:
queryName(where: { ids: ["1234567890123456789","1234567890123456790"] },offset: 0,max: 10) {
但是当在变量中传递相同的值时:
const idArr = ["1234567890123456789","1234567890123456790"];
...
queryName(where: { ids: ${idArr} },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) {
...
}
}
请注意,变量的类型将取决于使用它的参数,这取决于您实际查询的模式。
如何在请求中包含变量,取决于您用于发出请求的客户端,这在您的帖子中尚不清楚。如果您使用的是fetch
或其他一些简单的HTTP客户端,则只需将查询旁边的变量作为另一个属性包含在发送到服务器的有效负载中即可。
{
"query": "...","variables": {
...
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。