【问题标题】:GraphQL - Dynamically create shape of a queryGraphQL - 动态创建查询的形状
【发布时间】:2019-11-15 13:25:48
【问题描述】:

是否有用于在客户端动态创建 graphql 查询的包/方法?例如,假设我有以下查询

query { 
  foo {
    a
    b
    c {
      d {
        e
        f
      }
    g
  }
}

我想让用户选择/选择从该查询返回的数据字段。换句话说,如果他们不想要一个字段,我会在查询中省略它。 * 这是因为某些字段包含的数据量非常大,如果可以避免带宽问题,则最好避免。

我是否必须手动构建查询(呃)或者是否有人们在这种情况下使用的 javascript 工具?

我看到了这个,但它似乎不再维护,并且在问题选项卡中指出了一些问题:https://github.com/codemeasandwich/graphql-query-builder

【问题讨论】:

    标签: javascript graphql


    【解决方案1】:

    您可能必须自己构建查询(毕竟它只是一个字符串),在这种情况下,使用 Builder 模式可能会有所帮助,因为您似乎有一组复杂的参数来确定应该包含的内容查询。

    您看过这些 SO 答案了吗?这些能满足你的需要吗?

    GraphQL dynamic query building

    React Apollo dynamically create query from state(如果你使用 React/Apollo)

    要记住的一点是,使用动态而不是静态的客户端查询会失去一些缓存和安全优势。

    我还建议提醒您的用户,选择某些字段会导致昂贵的查询;至少,对这些数据进行分页,这样您就不会一次返回如此大量的数据。

    【讨论】:

    • 您好,谢谢!我不认为我想使用片段,因为单个查询可能返回 100 多个可能的结果。我喜欢第二个链接中动态的想法,但我不确定这是否会解释递归嵌套的对象。我已经有分页,所以我不会发回比需要更多的数据。
    猜你喜欢
    • 2018-12-21
    • 2018-11-25
    • 1970-01-01
    • 2018-11-25
    • 2020-08-31
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多