为啥有 Mongoose 模型而不仅仅是模式/文档? [复制]

Posted

技术标签:

【中文标题】为啥有 Mongoose 模型而不仅仅是模式/文档? [复制]【英文标题】:Why Has Mongoose Models Instead Of Just Schema/Documents? [duplicate]为什么有 Mongoose 模型而不仅仅是模式/文档? [复制] 【发布时间】:2014-05-19 23:23:11 【问题描述】:

我很惊讶这个问题以前没有被问过,让我有点担心我自己理解事情如何运作的能力......

在面向对象编程中,我们首先定义抽象,类,然后基于抽象实例化许多具体的对象。

为什么我们需要用 Mongoose 定义 Schema 和 Model ?这两个步骤不是一回事吗?

【问题讨论】:

之前有人问过;) 【参考方案1】:

原因很简单,“模型”和“模式”是两个完全不同的东西。

“模式”定义了类型约束和其他逻辑,而不是您希望如何“定义”对象。有很多方法可以做到这一点,包括基本类型规则,一直到定义某些验证方法,甚至是动态字段构造。 Schema 基本上是对象的扩展定义。

“模型”实际上是与存储“联系”的东西。这意味着在“哪里”中定义了一些东西来实际存储信息。用于与存储交互的“方法”通常也与模型相关联。所以你可以根据模型关联save,或finddelete。因此,“模式”可以“绑定”到各种“模型”,因为模型完全与存储位置有关。

因此,在基本的猫鼬意义上,“模式”不一定与“模型”建立“一对一”关系。一个模式可以有许多模型,因此进行了分离。

【讨论】:

以上是关于为啥有 Mongoose 模型而不仅仅是模式/文档? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Mongoose 为啥要添加空白数组?

Mongoose 嵌套模式与嵌套模型

Mongoose 模式——对子文档使用对象而不是数组

Mongoose 模式——对子文档使用对象而不是数组

为啥使用 Mongoose JS 删除嵌入式子文档数组的元素不起作用?

为啥在 mongoose 中需要 execPopulate 方法来填充现有文档?