【问题标题】:Passing default/static values from server to client将默认/静态值从服务器传递到客户端
【发布时间】:2019-12-24 15:20:49
【问题描述】:

我有一个输入类型,其中有两个字段用于过滤客户端上的查询。

我想将默认值 (rentIntervalLow + rentIntervalHigh) 从服务器传递到客户端,但不知道该怎么做。

以下是我当前的代码。我想出了两个幼稚的解决方案:

  1. 让客户端内省整个架构。

  2. 拥有一个全局配置对象,并使用返回配置对象值的解析器创建一个可查询的Config 类型。

有什么比上述更好的建议如何使客户端可以访问服务器上的默认/配置值?

// schema.js
const typeDefs = gql`
  input FilteringOptions {
    rentIntervalLow: Int = 4000
    rentIntervalHigh: Int = 10000
  }

  type Home {
    id: Int
    roomCount: Int
    rent: Int
  }

  type Query {
    allHomes(first: Int, cursor: Int, input: FilteringOptions): [Home]
  }
`

export default typeDefs

我正在使用 Apollo Server 2.8.1 和 Apollo React 3.0。

【问题讨论】:

    标签: graphql react-apollo apollo-server


    【解决方案1】:

    不必自省整个架构来获取有关特定类型的信息。您可以编写如下查询:

    query {
      __type(name:"FilteringOptions") {
        inputFields {
          name
          description
          defaultValue
        }
      }
    }
    

    默认值是在查询中省略特定输入值时使用的值。因此,为了利用默认值,客户端会将一个空对象传递给allHomes 字段的input 参数。您还可以为input 提供默认值{},这将允许客户端根本不提供input 参数,同时仍将最小和最大默认值传递给解析器。

    但是,如果您的意图是向客户端提供最小值和最大值以驱动某些特定于客户端的逻辑(如验证、下拉菜单值等),那么您不应使用默认值这。相反,此信息应由客户端直接查询,例如使用您建议的 Config 类型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-29
      相关资源
      最近更新 更多