2016-11-14 4 views
2

es6を使用してnode.jsアプリケーションにDDDを導入しようとしています。私はデータアクセス層にmongooseを使用しています。私はmongooseにモデルスキーマに結びついた ".methods"プロパティがあることに気付きました。ビジネスロジックをエンティティに追加するという点では、ビジネスロジックを追加する理想的な場所ですか、モデルスキーマオブジェクトを反映し、データをコピーするビジネスロジックを保持する別のオブジェクトを作成することを検討すべきですか?私が連続して使用していた場合、ここでどのようなアプローチが優先されますか?DDD + node.js:ドメインロジックはどこに行くのですか

+0

CRUDには、永続フレームワークの種類がはるかに効果的です。 – plalx

答えて

2

私は本当にこれに決定的な答えはないと思うが、私はあなたにいくつかの意見を与えるだろう。

DDD 関連の概念と計測器は、OOP言語で公開されている機能(特に、インタフェース& IOC)に基づいて構築されています。 JavaScriptの世界では、特にモジュールシステムを活用するときに、状況が少し異なる傾向があります。それは不可能ではないが、妥協をする必要があるかもしれない、と言った。

DDDの重要な点の1つは、モデルが「平易」であることです。彼らは永続性機構などを完全に知らない、彼らは単にデータとロジックです。 Mongooseを使ってあなたのモデルを定義することによって、あなたはそれをかなり失うでしょう。ビジネスロジックがMongooseスキーマオブジェクトにアタッチされています。しかし、おそらくそれはあなたが妥協することができる場所です、それはあなたがそれについてどう思っているのか、あなたがどれほど純粋であることを望んでいるかに大きく依存します。さて、あなたが示唆したように、マッピングを行うことができます。その考えを進めることを決めたら、AutoMapperのようなものが役に立ちます。私はcerializeのES7デコレータを使用してよりシンプルなアプローチ(ただし、スキーマは使用していませんでした)のプロジェクトに携わってきました。

+0

それは私の心配です。私がリポジトリなどを切り替える必要がある場合、私は道路の下で問題になる可能性があるカップリングを作成するように思えるので、ビジネスルールを含んでいる別の「エンティティ」オブジェクトを作成する方がよいでしょう。マッパーを使用してデータを前後に移動します。ヘッドアップをありがとう。 – user1790300

関連する問題