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

Cli*_*ead 9 mongoose node.js

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

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

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

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

hun*_*tis 9

由于mongoose已经是数据库层的抽象,因此您应该完全按照您的怀疑进行操作,并直接在mongoose中构建模型抽象.

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

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