私は NodeJS と MongoDB を使って遊んでいます。本当に大きなアプリケーションになりそうなものを作りたいです。そのため、アプリケーションをできる限り切り離して設計するようにしています。
ビジネスロジックがデータの保存方法を認識しないようにするために、永続化レイヤーを抽象化すると便利だと思います(将来、RDBMS用にMongoDBを切り替える必要があるかどうかはわかりません)。それを知って、データストレージに必要な操作を備えた FACADE を作成し、メディエーターのパトロンを使用して FACADE 操作をサブスクライブし、それらを実装することを考えました。このメディエーターは、イベント リスナーを使用してファサードに接続し、ファサードはイベント エミッターを使用します。次に、メディエーターにサブスクライブするモデルにはすべてのマングース スキーマが含まれ、すべてのデータベース/永続性の問題を担当します。(それは意味がありますか?)
私は、マングースがデータモデルに非常にタイトであることを知っています. すなわち。Player プロトタイプではなく、PlayerSchema と PlayerModel があると予想されます。そう:
- マングースのデータ モデルを使用する必要がありますか? (これを行う際に制限/問題はありますか?-DBを切り替えるとそれらを書き直す必要があることに加えて-)
- マングースのデータ モデルをビジネス ロジックのプロトタイプに (この FACADE コンポーネントによって) 変換する必要がありますか? MongoDB データにアクセスするために別の ORM を試す必要がありますか?
私はJavaScript、Node、およびこれらすべてのテクノロジーに非常に慣れていないため、これらの抽象化を本当に行いたいと考えています(したがって、各部分を分離してテストし、より良い解決策がある場合はレイヤーを切り替えられるようにしたいと考えています)。
どんなアドバイスでも大歓迎です!