我有一个输入类型,其中包含两个字段,用于过滤客户端上的查询。
我想将默认值(rentIntervalLow
+rentIntervalHigh
(从服务器传递到客户端,但不知道如何做。
下面是我当前的代码。我想出了两个幼稚的解决方案:
-
让客户端自省整个架构。
-
具有全局配置对象,并使用返回配置对象值的解析程序创建可查询
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
类型。