2016-11-14 73 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