2016-07-25 2 views
0

장바구니에 복잡한 양식을 만들고 있는데 주문 절차의 다른 단계에서 내 order 개체의 다른 부분을 확인하고 싶습니다.오브젝트 라이프 사이클의 여러 단계에서 유성기 스키마 유효성 검사를 변경 하시겠습니까?

OrderSchema = new SimpleSchema({ 
    itemsOrdered: { 
    type: [Object], 
    optional: false, 
    }, 
    totalPrice: { 
    type: Number, 
    optional: false, 
    }, 
    status: { 
    type: String, 
    optional: false 
    }, 
    termsAgreed: { 
    type: Boolean, 
    optional: false 
    }, 
    customerAddress: { 
    type: Object, 
    optional: false 
    }, 
    stripePaymentInfo: { 
    type: Object, 
    optional: true, 
    blackbox: true 
    }, 
}); 

그것은 다른 분야는 order의 라이프 사이클의 다른 단계에서 다른 검증 할 필요가 IMO 때문에 엉망 이죠.

  • 선택 제품의 중간에 여전히 사용자가 아직 termsAgreed, customerAddress, 또는 stripePaymentInfo이없는 있지만에 주문 과정에서 너무 일찍 아직도 이후 유효성 검사 때문에이 두 가지 실패하지 않으 유효성을 검사하고

  • 고객 주소를 기입하는 사용자는 stripePaymentInfo 또는 termsAgreed이 필요하지 않습니다.

  • 등 내가 스키마가 continue 버튼을 가능 등의 작업을 실행하는 데 다른 단계에서 성공적으로 검증 할 필요가있다.

    autoform은 항상 개체 전체의 유효성을 검사하기 위해 전체 스키마를 사용하려고하므로 Contact Me 폼과 같은 간단한 개체에는 적합하며 수명주기는별로 필요하지 않습니다.

    수명주기의 여러 단계에서 복잡한 개체 유효성 검사를위한 모범 사례 또는 패턴이 있습니까?

  • +0

    하위 스키마로 분할하고 결합하여 다른 스키마를 도출하려고하는 마음입니까? 또는 단계에서 다르게 추출 할 수 있습니다. – Season

    +0

    'autoform'을 사용하여 어떻게 서로 다른 시간대에 이러한 하위 스키마를 호출 할 수 있습니까? – fuzzybabybunny

    답변

    2

    가장 깨끗한 것은 질문의 "상태"에 따라 유효성을 검사하는 사용자 지정 유효성 검사가있는 스키마가있는 것입니다 (이 경우 Order). '상태'는 이미 존재하는 것, 이미 그 무엇을 식별 할 수있는 경우 또는 열거 형 등의 Order에있는 "상태 값"에 의해 결정될 수 있습니다. 이렇게하면 즉시 사용할 수있는 SimpleSchema 기능을 사용하여 유효성 검사를 수행 할 수 있으며 다운 스트림 기능을 손상시킬 수있는 일회용 솔루션에 묶이지 않아도됩니다.

    그러면 상태를 볼 수있는 custom validation function을 작성하고 상태가 호출되면 유효성 검사를 수행하거나 유효성 검사 오류없이 올바르게 통과 할 수 있도록 유효성 검사를 반환합니다.

    +0

    동의 함,이 사용자 지정 유효성 검사를 호출합니다. (지저분한) 대안은 진행중인 주문에 임시 수집 물을 사용하고 그 규칙이 모호하지 않은 끝 부분에 임시 문서를 마스터 수집으로 결합하는 것입니다. –

    +0

    나는 본다. 이 작업을 수행하기 위해 설정된 패턴이나 모범 사례가 있습니까? 마법사의 각 단계가 검증되면 폼 마법사에서 항상이 기능을 사용할 것으로 기대됩니다. 단일 값에 대한 유효성 검사가 여러 상태에 따라 달라질 수 있기 때문에 사용자 정의가 엉망이되는 것을 확인할 수 있습니다. 내 감정은'autoform'이 * one 스키마와 너무 밀접하게 결합되어 있다는 것입니다. 사용자가 양식을 통해 작업 할 때 단일 자동 서식 안팎으로 스키마를 교환하는 것이 좋습니다. – fuzzybabybunny

    +0

    폼 마법사의 대안은 각 페이지를 별도의 스키마로 표시하는 것입니다. 그런 다음이를 연결하는 통합 ID/개체가 있습니다.대부분의 경우 양식 마법사 데이터는 페이지의 요소가 다소 관련이있는 "데이터와 같은"형식으로 분리됩니다 (한 페이지의 주소/전화, 다른 페이지의 건강 정보 등). 패턴에 관한 한, 나는 돌 속에 아무것도 없다고 생각하지 않습니다. 제 생각에는 개발자로서 가장 편안하게 지원하는 것입니다. – CodeChimp