2013-01-24 11 views
9

私は伝統的なC#開発者です。以前は、階層化されたアーキテクチャでMVCを使用していました。私は今、NodeJs/Mongooseのアプリを書いています。そして、私はMongooseがどのように動作するのか疑問に思っています。メソッドをMongooseのモデルまたは別のレイヤーに定義する必要がありますか?

私は単純なPOCOとしてモデルを定義し、それらをレイヤーに渡し、リポジトリはすべてのデータアクセスを行います。

Mongooseでは、データアクセスはモデル自体で行われます。 .save()を呼び出し、静的メソッドとインスタンスメソッドを宣言できます。 myModel.findAllByX()などです。これは私の出発点ですが、私はいくつかのプロと矛盾を見ることができます。

ここに何か不足していますか?良い練習のヒントはありますか、それとも単純なままにして、それを別のレイヤーに渡すのではなく、私のモンゴーズモデルのすべてを宣言するだけですか?

答えて

9

mongooseはすでにデータベースレイヤー上の抽象化であるため、モデル抽象化を疑問視して直接作成する必要があります。

これは、staticmethodのシステムがMongooseモデルのためのもので、フックシステム(pre-init、saveなど)のためのものです。

大規模なアプリケーションでは、通常、カスタムスタティックとメソッドを使用して、マングースモデルにアクセスすることになります。この意味では、これらのスタティックとメソッドが実際に話している「分離レイヤー」を構成するという議論をすることができます約MVCから。

関連する問題