应该在Mongoose中的模型还是在单独的层中定义方法?

我是一个传统的C#开发人员,过去我使用了分层架构的MVC。 我现在用NodeJs / Mongoose编写了一个应用程序,我对Mongoose的工作方式有些困惑。

在过去,我将我的模型定义为简单的POCO,将它们传递给图层,我的存储库将完成所有的数据访问。

在Mongoose中,数据访问发生在模型本身上。 你可以调用.save(),声明静态和实例方法,例如myModel.findAllByX()等等。虽然这对我来说是一个启示,但是我可以看到一些专业人士和控制者。

我在这里错过了什么? 有没有什么好的练习技巧,或者我应该保持简单,只是在我的Mongoose模型上声明一切,而不是将它传递给另一个层?

由于mongoose已经是数据库层的抽象了,所以你应该完全按照你的猜测来做,并且直接用mongoose来build立你的模型抽象。

这就是staticmethod系统是在Mongoose模型上的 – 这也是钩子系统(pre-init,save等)的用途。

在大型应用程序中,我们通常最终只能通过自定义静态和方法来访问我们的mongoose模型……从这个意义上说,您可以说这些静态和方法实际上构成了您正在从MVC讨论的“单独的层”。