GraphQLError:语法错误:预期的$,找到的[

时间:2019-05-22 16:53:57

标签: reactjs syntax-error graphql react-apollo

我正在尝试查询这里的graphql服务器

http://sapienscube.pythonanywhere.com/intrusion-detection-system

在Reactjs中使用Apollo进行以下查询:

const PREDICT_ATTACK_TYPE = gql`
  query Query($packets: List[List[String]) {
    predict(packets: $packets)
  }
`;
// features is an array of arrays of strings: List[List[String]] like this: [[0, tcp, http, ..., ]]
<Query query={PREDICT_ATTACK_TYPE} variables={{ features }}>
        {({ loading, error, data }) => {
          if (loading) return <div>loading..</div>;
          if (error) return <div>Error:</div>;
          console.log(data);
          return <div>{data.predict}</div>;
        }}

但是我遇到了错误

GraphQLError:语法错误:预期的$,找到了[

   5 | 
   6 | import { getFeaturesArray } from "./Utils";
   7 | 
>  8 | const PREDICT_ATTACK_TYPE = gql`
   9 |   query Query($packets: List[List[String]]) {
  10 |     predict(packets: $packets)
  11 |   }

1 个答案:

答案 0 :(得分:1)

虽然List在GraphQL中是一种类型,但不能在名称中在GraphQL文档中引用它。指定特定类型的List时,只需将类型包装在方括号([ ])中即可。

query Query($packets: [[String]]) {
  predict(packets: $packets)
}

这里[[String]]表示ListList中的一个String

您看到了以上错误,因为解析器正在将类型List注册为$packets的类型,然后移至下一个有效字符,该字符应为$来指示下一个变量定义的开始。