2014-06-05 81 views
5

我目前正在以以下格式存儲事件mycategory-mytype-uniqueid。在閱讀網絡上的各種帖子之後,我瞭解到我應該得到一個名爲mycategory的類別。我已經寫:如何從類別中進行投影?

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

我現在希望得到一個流mynewstream以及因此具有可變number,但我沒有。那麼我錯過了什麼?

回答

1

我想出瞭如何做到這一點。默認情況下,事件庫根據-分割後的最後一個詞創建類別。如果你想改變這個,你必須修改$by_category投影。在這種投影您指定的,如果你只指定一個行拆分什麼字符,但如果你想使用的第一行的類別,你必須在文件更新的東西,如:

first 
- 

這告訴eventstore取在-作爲事件類別分裂後的第一個詞。

+0

現在,「$ by_category」投影有這個第一件事,但它默認是停止的,而類別只是不能用於開箱即用。這讓我花了很多時間。 –

5

我想補充Alexey Zimarev的評論,因爲當我在Google上搜索同樣的問題時,我在這裏結束了,但是我的名聲太低,所以我不得不將這個評論放在答案中。

像托馬斯·揚森在他自己的答案寫到,在「$ BY_CATEGORY」標準投影現在自帶

first 
- 

配置。

就像Alexey Zimarev在他的評論中寫道的,即使您配置EventStore來運行所有投影,標準投影也不會自動開始。

因此,爲了啓動EventStore啓用了所有的預測和開始,你需要像這樣在你的YAML配置文件:

RunProjections: All 
StartStandardProjections: True 

或者,如果這樣做的命令行選項,使用的配置:

EventStore.ClusterNode.exe --run-projections=all --start-standard-projections=true