2013-07-04 4 views
1

RavenDB에서 제품 할인 기능을 구현하고 싶습니다.RavenDB에서 할인을 사용하는 방법

제품 문서 :

{ 
    "RegularPrice": 10.00, 
    "ReferencePrice": 0.0, 
    "Categories": [ 
    "A", 
    "B", 
    "C" 
    ] 
} 

지금 예를 들어 내가 카테고리 "A"의 모든 제품에 대한 할인을 제공하고 싶습니다

. 그래서 나는이 같은 할인 문서에 할인율에 대한 범주를지도 :

{ 
    "ProductDiscount": { 
    "A": 20.0 
    } 
} 

질문을 나는 방법을 ReferencePrice을 계산하고 저장하거나 할 때 업데이트합니까된다

  • 새로운 제품이 추가된다?
  • RegularPrice가 업데이트 되었습니까?
  • 할인 문서가 업데이트 되었습니까?

트리거와 함께 처리해야하는 것으로 보입니다. 그러나 나는 확실하지 않다!

답변

1

이 모델이 계속 될지 확신하지 못합니다. 제품을 할인과 어떻게 연관시킬 것입니까? 그것들은 카테고리별로 관련이 있지만,이 모델에서는 다 대다 관계입니다. 이게 니가 의도 한거야? 그렇다면 동일한 제품에 적용 할 수있는 여러 할인 혜택을 어떻게 처리합니까?

이렇게 남겨 두려면 가격을 계산하기 위해 멀티 맵/축소 및 Indexed Properties Bundle을 사용하여 고려해야 할 전략을 문서에 다시 작성하십시오. 그러나 이것은 꽤 복잡한 설정입니다.

카테고리 당 하나의 할인을 받고 카테고리 문서의 일부로 할인을 정의하면 쉽게 알 수 있습니다. 그런 다음 LoadDocument을 사용하여 색인 생성 중에 카테고리에 대한 할인을 적용 할 수 있습니다.

귀하가 유지 관리 할 수있는 요구 사항 인 에 적합한 모델로 실험해야합니다.

다른 아이디어 :

  • 예, 당신은 trigger 사용할 수 있지만 그 플러그인으로 서버 측 실행됩니다. 유지 관리가 어려울 수 있습니다.

  • 카테고리 할인이 적용될 때마다 수동으로 scripted patch request을 보낼 수 있습니다. 새 문서 및 기존 문서 편집은 자체 코드에서 수동으로 수행해야합니다.

  • 계산 된 가격을 제품에서 완전히 뺄 수 있습니다. 제품을로드 할 때마다 할인을 포함시키고 가격을 즉시 계산합니다.

내가 확신, 다른 사람이 있습니다. 그것은 정말로 귀하의 특정 애플 리케이션에서 작동에 따라 달라집니다. 귀하의 회신에 대해

+0

고맙습니다. 실제로 제품은 여러 범주와 관련이 있습니다. 여러 할인이있는 경우 가장 낮은 계산 가격이 설정됩니다. 좋은 제안과 아이디어가 있지만 일부는 내 맥락에서 유용하지 않습니다. - 색인 생성 중에 LoadDocument를 사용하면 문서가 업데이트되지 않습니다. - 트리거는 옵션이지만 유지 관리가 문제가됩니다 (또한 트리거를 사용하여 솔루션을 실현하는 방법을 알 수 없습니다) - 스크립트 된 패치 요청은 옵션입니다. 역시 수동 작업을 피하는 메커니즘을 선호합니다. - 런타임에 가격을 계산하는 것은 바람직하지 않습니다. ... – MED

+0

그래서 하나의 옵션이 있습니다. 인덱싱 된 속성 번들. 제 (할인) 가격을 계산합니다 인덱스 : 나는 다음을 시도 '지도 = 제품 p.Categories에서 C의 제품 의 페이지에서 => 선택 새로운 { 제품 ID = p.Id, ReferencePrice = p.RegularPrice의 * ((100 - LoadDocument ("할인 /"+ c) .Amount)/100) }' ... – MED

+0

제품 문서 속성 – MED