DDD + node.js:域逻辑应该去哪里

时间:2016-11-14 04:29:32

标签: node.js mongodb domain-driven-design

我正在尝试使用es6将DDD建立到node.js应用程序中。我正在使用mongoose作为我的数据访问层。我注意到mongoose有一个“.methods”属性绑定到模型模式。在向实体添加业务逻辑方面,这是否是添加业务逻辑的理想位置,还是应该考虑创建另一个对象来保存镜像模型架构对象的业务逻辑,并将数据从一个复制到另一个?如果我使用sequalize,那么首选方法是什么?

1 个答案:

答案 0 :(得分:2)

我认为没有确切的答案,但我会给你一些意见。

许多DDD 相关的概念和工具是围绕OOP语言(特别是:接口和IOC)公开的功能构建的。在JavaScript世界中,事情往往略有不同,特别是在利用模块系统时。也就是说,这并非不可能,但可能需要做出妥协。

DDD中最重要的一点是你的模型是“普通的”。他们完全不了解任何持久性机制等,它们只是数据和逻辑。通过使用Mongoose定义模型,你几乎失去了它;您的业​​务逻辑被附加到Mongoose架构对象。但也许这就是你可以妥协的地方,这在很大程度上取决于你希望它是多么纯粹。现在,您可以按照建议进行映射。如果你决定继续这个想法,像AutoMapper这样的东西可能有所帮助。我参与了一个项目,该项目使用来自cerialize的ES7装饰器进行更简洁的方法(但我们没有使用模式)。