2016-11-14 5 views
2

Я пытаюсь ввести DDD в приложение node.js с помощью es6. Я использую mongoose для своего уровня доступа к данным. Я заметил, что у мангуста есть свойство «.methods», привязанное к схеме модели. Что касается добавления бизнес-логики к сущности, будет ли это идеальным местом для добавления бизнес-логики или я должен рассмотреть возможность создания другого объекта, который содержит бизнес-логику, которая отражает объект схемы модели и просто копирует данные из одного в другой? Если бы я использовал секнализацию, какой из них был бы предпочтительным?DDD + node.js: где должна идти логика домена

+0

Там, где каркасы устойчивости намного эффективнее для CRUD. – plalx

ответ

2

Я не думаю, что на самом деле есть окончательный ответ на этот вопрос, но я дам вам несколько мнений.

Число DDD концепции и инструменты построены вокруг функций, открытых языками ООП (в частности: интерфейсы & IOC). В мире JavaScript вещи, как правило, немного отличаются друг от друга, особенно при использовании модульной системы. Тем не менее, это не невозможно, но компромиссы могут потребоваться.

Одним из наиболее важных моментов в DDD является то, что ваши модели являются «обычными». Они совершенно не знают о каких-либо механизмах персистентности и т. Д., Они просто просто данные и логика. Определяя свои модели с помощью Mongoose, вы в значительной степени теряете это; ваша бизнес-логика привязана к объекту схемы Mongoose. Но, возможно, именно здесь вы можете пойти на компромисс, это очень зависит от того, насколько пурист вы хотите быть об этом. Теперь вы можете делать сопоставление, как вы и предполагали. Если вы решите продолжить эту идею, то может помочь что-то вроде AutoMapper. Я участвовал в проекте, который использовал декораторы ES7 от cerialize для подхода с использованием терминов (мы не использовали схемы, однако).

+0

Это моя забота. Похоже, я создавал бы соединение, которое могло бы быть проблемой в будущем, если мне нужно было переключать репозитории и т. Д. Итак, было бы лучше подойти к созданию отдельного объекта «сущности», который также содержал бы бизнес-правила и просто перемещать данные взад и вперед с помощью сопоставления. Спасибо за головы. – user1790300

Смежные вопросы