You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

清洁架构下视图模型转实体:回存数据丢失的解决方案咨询

清洁架构下Presenter转换视图模型的回存问题

核心结论:必须在视图模型中携带原始实体的ID,同时原始精确数据要在业务/数据层保留,绝对不能依赖视图返回的格式化后数据回存

  • 视图模型的唯一职责是适配视图展示需求,amountLabel这类格式化文本只是给用户看的,不具备业务数据的精度和可靠性,用它回存会直接丢失原始精确值,完全违背数据一致性原则。
  • 视图不需要关心原始数据的存储细节,只需要把实体ID和用户的有效输入(比如编辑时的新金额数值)传递给控制器即可。控制器拿到ID后,从数据层获取完整的原始ExpenseEntity,再结合用户输入完成更新,最后持久化。
  • 绝对不要尝试从amountLabel反解析原始数据:一来格式化操作本身就丢失了精度(比如5.33333变成5.33),二来文本解析容易因为格式变化(比如符号、空格)出现错误,不符合清洁架构中"职责单一、数据流向清晰"的设计原则。

举个标准流程示例:

  1. 数据层获取原始实体:
{ id: 1, amount: 5.33333, currency: 'dollars' }
  1. Presenter转换为带ID的视图模型(关键是保留ID):
{ id: 1, amountLabel: '$5.33' }
  1. 视图展示模型,若用户编辑金额,视图向控制器传递{ id: 1, newAmount: 6.5555 }(这里的newAmount是用户输入的精确数值,不是格式化文本)
  2. 控制器通过ID从数据层取回原始实体,更新amount字段为6.5555,再持久化回数据库

内容的提问来源于stack exchange,提问作者Nicolas SEPTIER

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 14:02:36