2016-11-14 120 views
2

我正在嘗試使用es6將DDD引入到node.js應用程序中。我爲我的數據訪問層使用貓鼬。我注意到貓鼬具有與模型模式綁定的「.methods」屬性。在向實體添加業務邏輯方面,這是否會成爲添加業務邏輯的理想場所,還是應該考慮創建另一個對象,該對象擁有鏡像模型模式對象的業務邏輯,並將數據從一個數據複製到另一個數據?如果我正在使用sequalize,那麼這裏的首選方法是什麼?DDD + node.js:域邏輯去哪裏

+0

持久性框架的種類對於CRUD更加有效。 – plalx

回答

2

我不認爲這確實有一個明確的答案,但我會給你一些意見。

許多DDD 相關概念和儀器是圍繞OOP語言公開的特徵(特別是:接口& IOC)構建的。在JavaScript世界中,情況往往有所不同,特別是在利用模塊系統時。這就是說,這不是不可能的,但可能需要作出妥協。

DDD中最重要的一點是您的模型是「普通」的。他們完全不瞭解任何持久性機制等,他們只是數據和邏輯。通過使用Mongoose定義你的模型,你幾乎失去了;您的業​​務邏輯被附加到Mongoose模式對象。但也許這就是你可以妥協的地方,這很大程度上取決於你希望如何純粹。現在,您可以按照您的建議進行映射。如果你決定繼續這個想法,像AutoMapper可能會有所幫助。我已經參與了一個項目,使用cerialize的ES7裝飾器來實現一種簡潔的方法(但我們並沒有使用模式)。

+0

這是我關心的問題。看起來,如果我需要切換存儲庫等,我會創建耦合,這可能會成爲一個問題。因此,創建一個單獨的「實體」對象也是一種更好的方法,該對象也包含業務規則,並且只是使用映射器來回移動數據。感謝您的高舉。 – user1790300