2017-01-03 8 views
0

저는 이벤트 저장소를 잠깐 보았습니다. 그리고 저를 곤란하게 만들었던 한 가지는 프로젝션 작성을 고려해야 할 때입니다. 평평한 투영법을 만드는 것이 일반적인 관행입니까?EventStore 투영법 사용시기

여기 예를 들어 총

당 스트림을 사용하는 설정은, 내가 같이이 사건이 말할 수 :

public class OrderPlaced 
{ 
    public OrderPlaced(string reference, Currency currency, Amount amount) 
    { 
     ... 
    } 

    public string Reference { get; } 

    public Currency Currency { get; } //Custom type 

    public Amount Amount { get; } //Custom type 
} 

public class OrderCompleted 
{ 
    public OrderCompleted(string reference) 
    { 
     this.Reference = reference; 
    } 

    public string Reference { get; } 
} 

을 나는 다음과 같은 쿼리를 가지고 :

fromCategory('MyCategory') 
    .whenAny(function(s, e) { 
     linkTo("Foo", e); 
    }) 

위의 내용은별로 효과가 없으며 모든 스트림을 집계합니다. int o 단수. 더 평평한 뷰를 투영 할 수 있습니까? 예를 들어 다음과 같이 입력하십시오. 아마도 나는 내 전선을 가로 지르지 만 분명히 이것을 사용하여 emit을 얻을 수 있습니까? 나는 집계가 유효한 상태에 따라서 모든 이해 관계자를 위해 나는 단지 이러한 과정이 필요한 필드를 노출한다 보장 할 수 내가 스트림에 기입 한 후

{ 
    string Reference; 
    string CurrencyCode; 
    decimal PayingAmount; 
} 

내 생각이다. 간단한 모델 (비정규 화 된 뷰)을 올바른 것으로 투사하고 있습니까?

위의 예는 간단한 예이지만 좀 더 복잡한 집계를 상상할 수 있습니다.

내가 놓친 것이 있거나 추가 설명이 필요하면 의견을 말하면 추가 할 수 있습니다.

+0

나에게 잘 들립니다. 나는 Projections가 현재 베타 버전에 있다고 생각한다. 4.0.0으로 올 것으로 예상된다. 기존 프로젝션 문서를 읽었습니까? http://docs.geteventstore.com. 내가 작업 한 프로젝트에서 우리는 쿼리하기를 원하는 단순한 상태 (사용자 이름은 고유해야했기 때문에 사용자 집계/스트림에서 사용자 이름 투영을 유지 관리해야 함)가있을 때 기본 제공 투영법을 사용했습니다. – tomliversidge

+0

나는 문서를 읽었으며 최소한 나를 위해 조금 자세가 부족하다. 전체 집계를 가져올 수 있도록 쿼리에 스트림을로드 할 수 있습니까? 이것은 이벤트 2를 얻으면 전체 집계를로드하고 이벤트 1과 2에서 정보를 가져 와서 병합 된보기를 생성합니다. 이것이 가능한가? –

+0

집계를 나타내는 카테고리 (예 : '사용자')를 구독 한 다음 간단한 자바 스크립트 문을 사용하여 각 이벤트 유형으로 수행 할 작업을 결정할 수 있습니다. 이벤트 유형 = eventtype1 {} 등 – tomliversidge

답변

0

표준 이벤트 카테고리 투영을 찾고 있습니다.

'$ ce-'라고하는 증기에 연결된 이벤트를 방출합니다. 해당 범주에는 개체 유형이 있습니다.

예를 들어, 집계 유형은 Order, 당신은 1과 3이 집계 루트 ID가있는 이름 Order-1, Order-2와 스트림 등 이벤트 OrderCreated, OrderLineAdded를 작성합니다. 그런 다음 $ce-Order 스트림에는 해당 유형의 모든 집계에 대한 모든 이벤트가 포함됩니다.

standard projections documentation을 살펴보십시오.

일반적으로 이것은 카테고리 스트림에서 캐치 업 (catch-up) 구독을 생성하고 이에 따라 읽기 모델을 업데이트하여 읽기 측 예측을 만드는 것과 정확히 같습니다.

투영을 실행하려면 --run-projections=all –-start-standard-projections=true을 사용해야 작동합니다.