2014-06-05 18 views
5

Tôi hiện đang lưu trữ các sự kiện ở định dạng sau mycategory-mytype-uniqueid. Những gì tôi đã hiểu sau khi đọc các bài viết khác nhau trên web tôi sẽ nhận được một loại gọi là mycategory làm điều đó. Tôi đã viết:Làm cách nào để thực hiện phép chiếu từ một danh mục?

fromCategory('mycategory') 
    .foreachStream() 
    .when({ 
    $init: function(){ 
     return {number: 0}; 
    }, 
    $any: function(state, ev){ 
     linkTo('mynewstream', ev); 
     return {number: state.number};   
    }  
    }); 

bây giờ tôi mong muốn nhận được một dòng mynewstream cũng như kết quả một với một biến number, nhưng tôi đã không. Vì vậy, tôi đang thiếu gì?

Trả lời

1

Tôi đã tìm ra cách thực hiện. Theo tổ chức sự kiện mặc định tạo danh mục dựa trên từ cuối cùng sau khi tách trên -. Nếu bạn muốn thay đổi điều này, bạn phải sửa đổi phép chiếu $by_category. Trong dự báo mà bạn chỉ định những gì nhân vật để phân chia tại nếu bạn chỉ định một hàng, nhưng nếu bạn muốn sử dụng hàng đầu tiên làm loại bạn phải cập nhật các tập tin vào một cái gì đó như:

first 
- 

Điều đó nói với eventstore để tận từ đầu tiên sau khi tách trên - làm danh mục cho các sự kiện.

+0

Hiện tại, phép chiếu "$ by_category" có điều đầu tiên này nhưng được dừng theo mặc định và các danh mục không hoạt động. Nó khiến tôi mất khá nhiều thời gian. –

5

Tôi muốn thêm vào cam kết của Alexey Zimarev, vì tôi đã kết thúc ở đây khi googling cùng một vấn đề, nhưng tôi có quá ít danh tiếng nên tôi sẽ phải đưa nhận xét này vào câu trả lời.

Giống như Tomas Jansson viết trong câu trả lời của riêng mình, "$ by_category" chiếu tiêu chuẩn hiện nay đi kèm với cấu hình

first 
- 

.

Và giống như Alexey Zimarev viết trong bình luận của mình, các dự báo chuẩn không được BẮT ĐẦU tự động, ngay cả khi bạn định cấu hình EventStore để chạy tất cả các phép chiếu.

Vì vậy, để bắt đầu EventStore với tất cả các dự báo được kích hoạt và bắt đầu, bạn cần một cái gì đó như thế này trong yaml tập tin cấu hình của bạn:

RunProjections: All 
StartStandardProjections: True 

Hoặc, nếu làm cấu hình bởi các tùy chọn dòng lệnh, sử dụng:

EventStore.ClusterNode.exe --run-projections=all --start-standard-projections=true 
Các vấn đề liên quan