如何在验证数据库对象时以功能方式累积错误?

时间:2013-02-16 14:31:17

标签: scala salat

我有Product个案例类,由DAO层返回(使用Salat)。正在创建产品第一次产品状态的用户仍然是“草稿”,其中没有任何字段(产品)是强制性的。

验证10个产品属性的最佳功能方法是什么,将所有验证错误累积到单个实体中,然后以JSON格式一次性将所有错误传递到前端?

2 个答案:

答案 0 :(得分:3)

我认为问题的核心是如何累积错误 - JSON格式是一个单独的问题,并不依赖于你如何收集错误。

如果它只是一个验证问题,您可以使用一系列方法

def problemWithX: Option[String] = ...

如果它们无效则返回Some(errorMessage);如果它们没有问题,则返回None。然后它就像

一样简单
List(problemWithX, problemWithY, ...).flatten

创建所有错误的列表。如果你的清单是空的,你很高兴。如果没有,则列出错误。创建一些合理的错误报告是problemWithX方法的工作 - 当然,您需要决定是否只需要字符串或更复杂的信息。 (您甚至可能需要定义Invalid特征并让类扩展它以处理不同的条件。)

答案 1 :(得分:1)

这正是ScalaZ的Validation类型的用途。