2014-06-05 24 views
5

Attualmente sto memorizzando eventi nel seguente formato mycategory-mytype-uniqueid. Quello che ho capito dopo aver letto vari post sul web dovrei ottenere una categoria chiamata mycategory facendo ciò. Ho scritto:Come eseguire la proiezione da una categoria?

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

ora si aspettano di ottenere un flusso mynewstream così come un risultato con una variabile number, ma ho avuto nessuno dei due. Quindi cosa mi sto perdendo?

risposta

1

Ho capito come farlo. Per impostazione predefinita, eventstore crea le categorie in base all'ultima parola dopo la suddivisione in -. Se si desidera modificare questo è necessario modificare la proiezione $by_category. In che la proiezione si specifica che carattere per dividere in se si specifica solo una riga, ma se si desidera utilizzare la prima riga come categoria è necessario aggiornare il file a qualcosa di simile:

first 
- 

Questo dice eventstore a prendere la prima parola dopo la suddivisione in - come categoria per gli eventi.

+0

Ora, la proiezione "$ by_category" ha questa prima cosa ma viene arrestata per impostazione predefinita e le categorie non funzionano immediatamente. Mi ha fatto perdere un po 'di tempo. –

5

Voglio aggiungere all'avvento di Alexey Zimarev, perché sono finito qui a cercare su google lo stesso problema, ma ho troppa poca reputazione quindi dovrò inserire questo commento in una risposta.

Come Tomas Jansson scrive nella sua risposta, il "$ by_category" proiezione standard è ora dotato di configurazione

first 
- 

.

E proprio come scrive Alexey Zimarev nel suo commento, le proiezioni standard non vengono avviate automaticamente, anche se si configura EventStore per eseguire tutte le proiezioni.

Così, al fine di avviare EventStore con tutte le proiezioni abilitati e hanno iniziato, hai bisogno di qualcosa di simile nel tuo YAML file di configurazione:

RunProjections: All 
StartStandardProjections: True 

Oppure, se facendo configurazione con opzioni della riga di comando, utilizzare:

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