graphql - GraphQL 不考虑字符串的动态数组有效字符串
问题描述
我有一个在手动输入时有效的查询:
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 变量来提供动态值以及查询,而不是使用字符串插值:
query ($idArr: [ID!]!) {
queryName(where: { ids: $idArr }, offset: 0, max: 10) {
...
}
}
请注意,变量的类型将取决于使用它的参数,这取决于您实际查询的任何模式。
您如何在请求中包含变量取决于您用来发出该请求的客户端,这在您的帖子中并不清楚。如果您正在使用fetch
或其他一些简单的 HTTP 客户端,您只需将查询旁边的变量作为另一个属性包含在您发送到服务器的有效负载中:
{
"query": "...",
"variables": {
...
}
}
推荐阅读
- flutter - 当页面在屏幕中显示时如何加载页面内容
- python - Django 迁移在 GitHub Actions 中不起作用
- python - 在 Python 中打开文件错误:没有这样的文件或目录
- python - 我应该如何选择条目以某个字符串开头的熊猫数据框的行?
- apache-spark - PySpark Kafka 错误:缺少应用程序资源
- javascript - 如何卸载 Puppeteer npm
- redirect - CakePHP 3.x 路由与 slug
- sorting - 为什么“_.orderBy”函数不对结果进行排序?
- python - 我是 pyomo 的新手,我在向集合和参数声明数据时遇到了麻烦。我总是收到语法错误的消息
- python - 从列表中删除元素