【问题标题】:How to do projection from a category?如何从类别进行投影?
【发布时间】:2014-06-05 10:16:22
【问题描述】:

我目前以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 的结果,但我都没有。那我错过了什么?

【问题讨论】:

    标签: eventstoredb


    【解决方案1】:

    我想添加到 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
    

    【讨论】:

      【解决方案2】:

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

      first
      -
      

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

      【讨论】:

      • 现在,"$by_category" 投影具有此功能,但默认情况下它会停止,并且类别不能开箱即用。这让我花了相当长的时间。
      猜你喜欢
      • 1970-01-01
      • 2012-04-24
      • 1970-01-01
      • 2012-05-09
      • 2019-07-21
      • 1970-01-01
      • 2015-07-27
      • 1970-01-01
      • 2014-12-11
      相关资源
      最近更新 更多