当前位置: 首页 > 知识库问答 >
问题:

向graphQLendpoint发送数组

闻华容
2023-03-14

图形QL服务器已设置。当值被硬编码时,它可以正常工作。这是我的调用请求:

"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?

共有1个答案

鱼阳伯
2023-03-14

如果您试图传递复杂的选项,最好的方法是使用变量。这样,您就不必担心将任何内容格式化到查询字符串中。

因此,您将发送如下请求:

{
  "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,这相当于在查询中使用并单独传递参数。基本上,您不应该在应用程序中手动序列化和连接查询,因为变量是专门为这种情况设计的。

事实上,正如我们在这篇博文中概述的那样,有很多很好的理由将查询保持为完全静态的字符串。

 类似资料:
  • 和我的java代码作为 现在我的Arcticle类是 现在我在排队时例外 system.out.println(user.getRouteFirst()); Gson Gson=新Gson(); typeToken>token=new typeToken>(){};List personList=gson.fromjson(user.getRouteFirst(),token.getType())

  • 接口: 以下是我的web.config: 和我的app.config:

  • 我有一个关于Spring WebFlux的问题。我想创建一个使用内容类型text/event-stream的反应endpoint。不是生产而是消费。我们的一个服务需要向另一个服务发送大量的小对象,我们认为这样流式传输可能是一个很好的解决方案。 流量是每1秒产生一个值的流。我遇到的问题是,WebClient完全读取发布服务器,然后将数据作为一个整体发送,而不是一个接一个地流式传输。我能用这个客户机或

  • 我们有一个返回产品信息的网络服务。服务期望在发布数据中有一个JSON数组...该 来自简单HTML测试网页的示例脚本如下所示(该脚本按预期工作): 用PHP编写的web服务正确地接收到这一信息。转储(打印)web服务从客户端接收的数据将导致以下数组: 现在问题来了......我试图从Google Sheet Script调用webservice,如下所示: 从Google Sheets脚本调用PH

  • 问题内容: 这是我的方案: 我必须调用一个方法。假设参数为:Parameter1,Parameter2,..,..,Parameter N,但是要发送给该方法的参数在每种情况下都可能会更改。 情况1: 仅发送参数 1 情况2: 发送参数的组合 情况3: 发送所有参数 用Java实现此目标的最佳方法是什么? 问题答案: 解决方案取决于问题的答案-所有参数是否都将是同一类型,如果是,则每个参数将被视为