Graphql 将pageContext数组传递给Gatsby的pageQuery

Graphql 将pageContext数组传递给Gatsby的pageQuery,graphql,gatsby,Graphql,Gatsby,我费了好几个小时才把pageContext数组传递给gatsby页面查询 如何将数组传递给GraphQL query AllCategoriesQuery($id: Int!, $cat: Array) { 下面是我的完整查询 export const query = graphql` query AllCategoriesQuery($id: Int!) { allStrapiChildcategories: allStrapiChildcategories( fil

我费了好几个小时才把pageContext数组传递给gatsby页面查询

如何将数组传递给GraphQL

query AllCategoriesQuery($id: Int!, $cat: Array) {
下面是我的完整查询

export const query = graphql`
  query AllCategoriesQuery($id: Int!) {
    allStrapiChildcategories: allStrapiChildcategories(
      filter: { category: { id: { eq: $id } } }
    ) {
      edges {
        node {
          id
          title
          strapiId
          category {
            id
            title
          }
        }
      }
    }
    allProducts: allStrapiProducts(
      filter: { childcategory: { id: { in: $cat } } }
    ) {
      edges {
        node {
          id
          title
          strapiId
          childcategory {
            id
          }
        }
      }
    }
  }
`

使用pageContext和GraphQL传递数组有点棘手

试试这个:

query AllCategoriesQuery($id: Int!, $cat: [Int!]!) {}
这样,您就定义了一个整数列表,这些整数被标记为感叹号!,这意味着这是一个必填字段

在GraphQL中,它们被称为列表而不是数组,尽管这种类比并不完全精确。列表按顺序保存项目。在SDL模式定义语言中,列出的修饰符写为方括号,括号中包含类型的包装实例


关于GraphQL模式的更多信息:

使用pageContext和GraphQL传递数组有点棘手

试试这个:

query AllCategoriesQuery($id: Int!, $cat: [Int!]!) {}
这样,您就定义了一个整数列表,这些整数被标记为感叹号!,这意味着这是一个必填字段

在GraphQL中,它们被称为列表而不是数组,尽管这种类比并不完全精确。列表按顺序保存项目。在SDL模式定义语言中,列出的修饰符写为方括号,括号中包含类型的包装实例


关于GraphQL模式的更多信息:

我得到了[String!]类型的错误变量$cat!用于预期类型[Int]的位置。我假设$cat是字符串数组,所以我使用了[String!。在filter:{childcategory:{id:{in:$cat}}}中查看您的过滤器,我猜它将是一个整数数组。我已经更新了我的答案,添加了类型:$cat:[Int!。谢谢@Ferran,我在pageContext$cati中设计了这个格式[123422453567],我现在就知道了!变量$cat的值childCategories无效;预期类型Int.Int不能表示非整数值:childCategories当您或插件/主题通过模式自定义API显式定义此GraphQL对象类型的GraphQL模式,并且childCategories与变量$cat的标量类型不匹配时,可能会发生这种情况。childCategories的值无效;应为Int.Int类型。以前从未见过此类型。你能试着换一下$cat:[Int!按$cat:[浮动!]!?还有一个问题,所有的allProducts都有一个要过滤的类别吗?我得到了一个错误变量$cat,类型为[String!用于预期类型[Int]的位置。我假设$cat是字符串数组,所以我使用了[String!。在filter:{childcategory:{id:{in:$cat}}}中查看您的过滤器,我猜它将是一个整数数组。我已经更新了我的答案,添加了类型:$cat:[Int!。谢谢@Ferran,我在pageContext$cati中设计了这个格式[123422453567],我现在就知道了!变量$cat的值childCategories无效;预期类型Int.Int不能表示非整数值:childCategories当您或插件/主题通过模式自定义API显式定义此GraphQL对象类型的GraphQL模式,并且childCategories与变量$cat的标量类型不匹配时,可能会发生这种情况。childCategories的值无效;应为Int.Int类型。以前从未见过此类型。你能试着换一下$cat:[Int!按$cat:[浮动!]!?还有一个问题,您的所有产品是否都有要过滤的类别?