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

10

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

过去,我会将模型定义成简单的POCO对象,经过各层传递,数据访问则由我的存储库完成。

而对于Mongoose,数据访问是发生在模型本身上的。您可以调用.save()方法、声明静态和实例方法(例如myModel.findAllByX()等)。虽然这对我来说是新的,但我可以看到其中的优缺点。

我是否有所遗漏?有没有什么好的实践建议,或者应该保持简单,仅在我的Mongoose模型上声明所有内容,而不是将其传递到另一层?

1个回答

10

由于mongoose已经是数据库层的抽象,因此您应该按照您怀疑的方式直接在mongoose中构建您的模型抽象。

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

在大型应用程序中,我们通常通过自定义静态和方法纯粹地访问我们的Mongoose模型...从这个意义上说,您可以认为那些静态和方法实际上组成了您所说的'MVC'的分离层。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接