domain object 呼叫 repository 與 eventStore

brighthas發表於2012-08-10

我正在編寫CQRS-NODE框架,下面我把 domain object 和 repository / eventStore互動的實現方式和大家分享一下,希望各位批評指正。


// 查詢程式碼
repository.findById(id,callback)
<p class="indent">



// repository你內部內含玄機
function findById(id,callback){

// IF : 內部先判斷cache中是否有這個物件,如果有直接返回cache中的物件。

// ELSE : 如果沒有,監聽 loaded event.
this.addListener('loaded id01',callback);

// 然後呼叫 event store 的 getSnapshot 得到最新的Snapshot
eventStore.getSnapshot(callback);

// THEN : 用snapshot作為引數得到之後的 events。
eventStore.getEvents(shapshot,callback)

// THEN : 然後load 為一個真正的aggre object
var aggre = eventStore.load(Type,snapshot,events);

// 加入到cache中,並觸發 loaded event 事件
this.cache[id] = aggreobj;
this.emit('loaded id01',aggreobj);

}
<p class="indent">


這種方式可以讓系統的物件是記憶體唯一的。

相關文章