2014-06-05 7 views
5

Ich speichere gerade Ereignisse im folgenden Format mycategory-mytype-uniqueid. Was ich nach dem Lesen verschiedener Beiträge im Web verstanden habe, sollte ich eine Kategorie namens mycategory tun. Ich habe geschrieben:Wie funktioniert die Projektion einer Kategorie?

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

ich jetzt einen Strom mynewstream sowie ein Ergebnis mit einer variablen number zu erhalten erwarten, aber ich habe auch nicht. Also was fehlt mir?

Antwort

1

Ich habe herausgefunden, wie es geht. Standardmäßig erstellt der Ereignisspeicher Kategorien basierend auf dem letzten Wort nach der Aufteilung auf -. Wenn Sie dies ändern möchten, müssen Sie die $by_category Projektion ändern. In dieser Projektion geben Sie was Zeichen an aufzuspalten, wenn Sie nur eine Zeile angeben, aber wenn Sie die erste Zeile als Kategorie verwenden möchten, müssen Sie die Datei, um etwas zu aktualisieren, wie:

first 
- 

Das eventstore zu nehmen erzählt das erste Wort nach der Aufteilung auf - als die Kategorie für die Ereignisse.

+0

Nun, "$ by_category" Projektion hat dieses erste - aber es ist standardmäßig gestoppt und Kategorien funktionieren einfach nicht out of the box. Es hat mir ziemlich viel Zeit gekostet. –

5

Ich möchte zu Alexey Zimarevs Kommentar hinzufügen, weil ich hier gelandet bin, als ich das gleiche Problem google, aber ich habe zu wenig Ruf, also muss ich diesen Kommentar in eine Antwort setzen.

Wie Tomas Jansson in seiner eigenen Antwort schreibt, kommt der "$ by_category" Standardprojektion jetzt mit der

first 
- 

Konfiguration.

Und genau wie Alexey Zimarev in seinem Kommentar schreibt, werden die Standardprojektionen nicht automatisch gestartet, auch wenn Sie EventStore so konfigurieren, dass alle Projektionen ausgeführt werden.

um Also, EventStor zu beginnen alle Projektionen aktiviert und gestartet, Sie so etwas in Ihrer yaml Config-Datei benötigen:

RunProjections: All 
StartStandardProjections: True 

Oder, wenn tut Konfiguration von Befehlszeilenoptionen verwenden:

Verwandte Themen