在Node.js应用中的域驱动设计
在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