TL; DR; Я ищу банальный пример приложения 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