【问题标题】:Why use mongoose in mean stack?为什么在平均堆栈中使用猫鼬?
【发布时间】:2017-02-14 17:49:04
【问题描述】:
我在使用平均堆栈的上下文中将此作为一个特定问题提出。(这可能是一个幼稚的问题,因为我是平均堆栈的新手)我已经看到使用 mongoose 将 mongodb 映射到对象的示例。 我想知道这样做的好处。
在我的理解中,将一个 json 块保存到 mongodb 中而不用担心数据的架构是有好处的。然后你有你的 Angular 客户端应用程序(单点)来定义和使用数据对象。在我看来,这已经是一个有效/不错的应用程序。
那么为什么要使用猫鼬方法呢?不是有冲突吗?您的客户端已经知道数据模型以便将其呈现给用户,为什么要在服务器(express)端再次定义它(猫鼬对象映射)?
【问题讨论】:
标签:
angularjs
mongoose
mean-stack
【解决方案1】:
我没有正确理解你的问题,但我希望这会有所帮助,
Mongoose 是 @Wasiq 正确指出的 ODM,因为它提供了 Nodejs(后端)和数据库(MongoDB)之间的中间件。我们为什么用它?
1) 原因之一是:它定义了模式(集合中的文档结构和模型用于创建将存储在文档中的数据实例)。由于 MongoDB 是 NOSQL,因此它是无模式的。对于来自传统数据库的开发者来说,这是一个很大的帮助。
2) Mongoose for MongoDB 的最佳之处在于,您可以对正在插入/更新的数据进行内置的自动验证。
或者您也可以使用 Node Driver 来编写查询,这样您就无需担心架构发生变化。
【解决方案2】:
Mongoose 是一个支持NodeJs 的Object Data Modeling,我们通过它连接到mongodb。在服务器端,您希望以更有条理和结构化的方式查询mongo。与原生 mongo 驱动程序相比,Mongose 具有限制数据冗余的模式和模型,有很多 ODM 可用的使用可以使用不同的,例如 monketc。
在 Angular 中,我们让服务与我们的服务器通信,它不关心数据模型,因为我们知道 request 和 response 将接收。