如何从一个类别进行投影?

时间:2014-06-05 10:16:22

标签: get-event-store

我目前正在以下列格式存储事件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的结果,但我没有得到。那我错过了什么?

2 个答案:

答案 0 :(得分:7)

我想补充Alexey Zimarev的意见,因为我在搜索同样的问题时最终到了这里,但我声名太低,所以我不得不把这个评论放在答案中。

就像Tomas Jansson在他自己的回答中写的那样," $ by_category"

现在附带标准投影
first
-

配置。

就像Alexey Zimarev在评论中写道的那样,即使你配置EventStore来运行所有预测,标准预测也不会自动启动。

因此,为了在启用并启动所有投影的情况下启动EventStore,您需要在yaml配置文件中使用以下内容:

RunProjections: All
StartStandardProjections: True

或者,如果通过命令行选项进行配置,请使用:

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

答案 1 :(得分:2)

我想出了怎么做。默认情况下,eventstore在-上拆分后根据最后一个单词创建类别。如果要更改此设置,则必须修改$by_category投影。在该投影中,如果只指定一行,则指定要拆分的字符,但如果要将第一行用作类别,则必须将文件更新为:

first
-

告诉eventstore在将-拆分为事件的类别后,取第一个单词。