2013-02-16 1 views
1

Product 케이스 클래스가 있는데, 이는 Salat을 사용하여 DAO 레이어에서 반환됩니다. 제품의 처음 제품 상태를 작성하는 사용자는 제품의 필드가 필수가 아닌 "초안"으로 남아 있습니다.데이터베이스 개체를 검증 할 때 기능적으로 오류를 누적하는 방법은 무엇입니까?

제품 속성 10 가지를 확인하고 모든 유효성 검증 오류를 단일 엔티티에 축적 한 다음 모든 오류를 JSON 형식으로 한번에 프런트 엔드에 전달하는 가장 좋은 기능 방법은 무엇입니까?

답변

3

오류의 누적되는 점은 질문의 핵심이라고 가정합니다. JSON 형식은 별도의 문제이므로 오류 수집 방법에 의존하지 않습니다. 그냥 검증 문제가 정말 경우

, 당신은 괜찮아 경우에는 유효하지 않거나 None 경우 Some(errorMessage)을 반환하는 방법

def problemWithX: Option[String] = ... 

의 시리즈를 가질 수있다. 그런 다음 모든 오류 목록을 작성하는 것과 같이 간단합니다.

List(problemWithX, problemWithY, ...).flatten 

귀하의 목록이 비어 있다면, 당신은 좋은거야. 그렇지 않은 경우 오류가 나열됩니다. 합리적인 오류 보고서를 작성하는 것은 problemWithX 메서드의 작업입니다. 물론 문자열이나 복잡한 정보가 필요한지 여부를 결정해야합니다. (Invalid 형질을 정의하고 다른 조건을 처리하기 위해 클래스를 확장해야 할 수도 있습니다.)

1

이것은 정확히 ScalaZ의 Validation 유형을위한 것입니다.

+2

재미있게 보입니다. 예제에 대한 링크가 있습니까? 나는이 대답이 훨씬 더 유용 할 수 있다고 생각한다. – crockpotveggies