【问题标题】:How to create an array of arrays as input in ApolloGraphQL如何在 ApolloGraphQL 中创建数组作为输入
【发布时间】:2020-09-14 06:11:19
【问题描述】:

如何在ApolloGraphQL 中创建一个数组作为输入?

例如,这样的查询的 Schema 应该如何:

{
    Users(Id:1, Filters:[["Id",">", "1"], ["Id","<","3"]]) {
      Id
      Name
    }
}

我尝试了以下架构,但没有运气:

const typeDefs = gql`
  type Query{
      Users(
        Id: ID,
        Filters: [[String, String, String]]
      )
   }
 `;

我在这里想要实现的是一个输入类型,它是一个 List of Lists,每个子列表正好包含 3 个字符串。所以在函数内可以这样调用:Filters:[["Id","&gt;", "1"], ..]

【问题讨论】:

  • 任何关于query variablesinput types 的知识? graphql.org/learn/schema/#input-types
  • 感谢您的链接,没有说明如何创建列表作为输入,但我很感激。
  • 使用您尝试定义的类型更新问题

标签: graphql apollo apollo-client graphql-js apollo-server


【解决方案1】:

嗨,Ander,我也尝试过实现类似的目标,但也不是运气。我最终改用了对象列表:

const typeDefs = gql`
  type Query{
      Users(
        Id: ID,
        Filters: [Filter]
      )
  }

  input Filter{
    A: String!
    B: String!
    C: String!
  }
`;

最后会是这样的:

{
    Users(Id:1, Filters:[{A:"Id",B:">", C:"1"}, ..]) {
      Id
      Name
    }
}

【讨论】:

  • 谢谢彼得 这是一个不错的选择,但我觉得它有点冗长。我会继续努力的。。
【解决方案2】:

似乎比我更容易,使用[[String]]就足够了:

const typeDefs = gql`
  type Query{
      Users(
        Id: ID,
        Filters: [[String]]
      )
   }
 `;

【讨论】:

    猜你喜欢
    • 2022-01-25
    • 2020-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-13
    • 2018-12-01
    • 2016-12-18
    相关资源
    最近更新 更多