在Node.js应用中的域驱动设计

13 浏览
0 Comments

在Node.js应用中的域驱动设计

简而言之,我正在寻找一个典型的DDD node.js应用程序的例子。

嗨,

我打算创建一个node应用程序,我想知道是否有任何将业务逻辑分离在领域中的应用程序示例。

好吧,有一些例子,比如:

https://github.com/adrai/node-cqrs-domain - 但这是一个完整的CQRS和事件溯源实现。

我的想法是这样做的:

//domain/book.js
function Book(title, author)
{
  this._title = title;
  this._author = author;
}
// domain methods ...
//infrastructure/persistance/repository/book-repository.js
function BookRepository()
{}
BookRepository.prototype.save(book)
{
  var bookModel = mappers.mapToOrm(book);
  return bookModel.save();
}
// [...] get, getAll, getNextId
//infrastructure/persistance/orm/book.js
//using http://bookshelfjs.org/
var Book = bookshelf.Model.extend({
  tableName: 'books'
});
//infrastructure/mappers/book-mapper.js
function mapToOrm(book) {
  //mapping [...]
  return new persistance.Book();
}
function mapToDomain(domain) {
  //mapping [...]
  return new domain.Book();
}

但另一方面,我从未见过类似的解决方案(有领域模型、ORM模型、仓储和映射器)。我是否思考得正确?也许在node.js应用程序中没有必要将业务逻辑分离在领域中。如果是这样,为什么?如果不是,你能给我一个DDD实现的示例或改进我的代码吗?

[2017/01/13]

我已经用TypeScript创建了一个示例应用程序,目前没有仓储和服务。欢迎提出问题和拉取请求。

https://github.com/dawiddominiak/ddd-typescript-bin-packing-problem-solution

0