Node.js 为什么Mongoose模型而不仅仅是模式/文档?

Node.js 为什么Mongoose模型而不仅仅是模式/文档?,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我很惊讶这个问题以前从未被问过,这让我有点担心自己是否有能力理解自己的工作方式 在面向对象编程中,我们首先定义抽象、类,然后基于抽象实例化许多具体对象 为什么我们需要用Mongoose定义模式和模型?这两个步骤不是一回事吗 原因很简单,“模型”和“模式”是两个完全不同的东西 “模式”定义类型约束和其他逻辑,而不是您希望如何“定义”对象。有很多方法可以做到这一点,包括基本类型规则,直到定义某些验证方法,甚至动态字段构造。模式基本上是对象的扩展定义 “模型”实际上是与存储“关联”的东西。这意味着在

我很惊讶这个问题以前从未被问过,这让我有点担心自己是否有能力理解自己的工作方式

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

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

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

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

  • “模型”实际上是与存储“关联”的东西。这意味着在“where”中定义了一些东西来实际存储信息。用于与存储交互的“方法”通常也与模型相关联。因此,您可以基于模型关联
    保存
    ,或
    查找
    删除
    。因此,“模式”可以“绑定”到各种“模型”,因为模型都是关于存储位置的


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

以前有人问过它;)