node.js - 方法应该在 Mongoose 中的模型上定义还是在单独的层中定义?

标签 node.js mongoose

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

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

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

我在这里遗漏了什么吗?是否有任何好的实践技巧,或者我应该保持简单,只在我的 Mongoose 模型上声明所有内容,而不是将其传递到另一层?

最佳答案

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

这就是 staticmethod 系统在 Mongoose 模型上的用途 - 这也是钩子(Hook)系统的用途(预初始化、保存等)。

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

关于node.js - 方法应该在 Mongoose 中的模型上定义还是在单独的层中定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14501838/

相关文章:

javascript - 如何使用 NodeJS 驱动程序在 Neo4j 中链接查询,同时将一些数据合并到新属性中?

node.js - 按价格对 Mongodb 数据排序

node.js - 从 Mongoose 的子文档 ID 中查找父文档

node.js - 更新所有记录的子文档数组中的字段

node.js - 获取后续意图中与原始意图不匹配的参数值

javascript - 尝试使用 node.js 安装 jquery 时出现错误消息

javascript - Mongoose 模式方法和 "this"更新属性 - NodeJS

node.js - 使用 objectId 保存 Mongoose

javascript - Node.js/Express 路由无法正常工作

node.js - 如何持续运行javascript.js服务并监控其进程?