【问题标题】:GraphQL - Defining default value for type definitionsGraphQL - 定义类型定义的默认值
【发布时间】:2021-03-04 01:32:05
【问题描述】:

我目前正在开发一个允许用户记录锻炼的项目。我已经为他们将记录的每个集合创建了这种类型和输入定义(将链接到相应的练习):

type Set {
  id: ID!
  reps: Int!
  weight: Float!
}

input SetInput {
  reps: Int!
  weight: Float!
}

当用户在客户端输入重量值时,我希望他们能够在公斤 (kg) 和磅 (lb) 度量之间进行选择。这让我意识到我需要在服务器端设置一个默认指标/值,这样当用户检索锻炼日志时,它不会让用户对他们为一组完成的重量感到困惑。

有没有办法为重量设置默认度量(例如公斤)?

【问题讨论】:

    标签: graphql


    【解决方案1】:

    可以在定义输入对象类型时为输入字段提供默认值:

    enum Unit {
      KG
      LB
    }
    
    input SetInput {
      reps: Int!
      weight: Float!
      unit: Unit = KG
    }
    

    但是,这仅意味着,如果在发出任何使用此输入类型的请求时省略该字段,unit 的值将是 KG。保留 unit 值并适当地返回它取决于您的服务器逻辑。

    【讨论】:

    • 谢谢,这是否意味着我可以忽略这个默认值,让我的解析器代码(服务器逻辑)在存储到我的数据库之前进行转换,以便它始终以公斤为单位?
    • 因为用户在输入重量时不能省略该字段
    • 您将您的 API 与您的 UI 混为一谈。如果您想让用户无法省略该字段,那么无论您在架构中是否有默认值,您都可以在前端执行此操作。
    猜你喜欢
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    • 2021-06-07
    • 1970-01-01
    • 2016-07-24
    • 2016-10-01
    • 1970-01-01
    • 2010-11-08
    相关资源
    最近更新 更多