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

时间:2013-01-24 12:53:08

标签: node.js mongoose

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

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

使用Mongoose,数据访问发生在Model本身上。你可以调用.save(),声明静态和实例方法,例如myModel.findAllByX()等。虽然这对我来说是一个偏离,但我可以看到一些赞成和赞成。

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

1 个答案:

答案 0 :(得分:9)

由于mongoose已经是数据库层的抽象,你应该完全按照你的怀疑做,并直接在mongoose中构建你的模型抽象。

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

在大型应用程序中,我们通常最终只通过自定义静态和方法来访问我们的mongoose模型......从这个意义上说,你可以证明这些静态和方法实际上构成了单独的层'你是从MVC谈起的。