将 default/static 个值从服务器传递到客户端

Passing default/static values from server to client

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

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

下面是我当前的代码。我提出了两个天真的解决方案:

  1. 让客户端内省整个模式。

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

关于如何使服务器上的 default/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。

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

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

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

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