为啥在 Node.js 中使用猫鼬模式

Posted

技术标签:

【中文标题】为啥在 Node.js 中使用猫鼬模式【英文标题】:Why use mongoose schema in Node.js为什么在 Node.js 中使用猫鼬模式 【发布时间】:2020-08-13 19:17:17 【问题描述】:

我正在学习 Node.js 和 Mongoose。然后,我遇到了术语模式,它被定义为数据结构、默认值和验证的描述。所以,我们知道架构基本上是这样的:

var TaskSchema = new Schema(
    name: String,
    priority: Number
);

我想问的问题是,我们为什么要关心schema允许实现的数据结构的描述,我的意思是,在mongoose中使用schema的要点是什么?如果您说验证,那么我们不能使用 express-validator 包来实现吗?或者...

【问题讨论】:

如果不建web服务器所以不使用express-validator @MickaelB.,嘿)),抱歉,我只是想了解 mongoose 中模式的主要用途,请您简单解释一下。对我来说很重要 这个问题可以推广到所有 javascript 中模式的使用。不仅是 DB,还有 JSON、表单、验证等...... 【参考方案1】:

Mongoose 中的一切都以 Schema 开始。每个模式都映射到一个 MongoDB 集合并定义该集合中文档的形状。

请参阅documentation 了解更多信息。

模式不仅定义了文档的结构和属性的转换,还定义了文档实例方法、静态模型方法、复合索引和称为中间件的文档生命周期挂钩。


这使您可以使用 mongoose 轻松地与数据库进行通信。这不仅仅是为了验证。

【讨论】:

好吧,我认为我无法得到的主要观点是“映射到MongoDB集合并定义该集合中文档的形状”,即为什么需要定义文档的形状。在什么情况下该定义会有所帮助? 这样文档具有相同的结构(即使是 MongoDB 也允许集合中的文档具有不同的结构),然后您可以使用该模型轻松地从数据库中插入读取的文档并轻松转换它们。 那么,您的意思是架构有助于实现数据的一致性,以便文档中的数据具有相同的结构? 是的,这就是您要使用 mongoose 或其他 ORM 的原因之一。检查这个article

以上是关于为啥在 Node.js 中使用猫鼬模式的主要内容,如果未能解决你的问题,请参考以下文章

猫鼬使用方法将模式添加到模式中

为啥猫鼬不更新?

如何按 ID node.js 过滤猫鼬集合

Node.js 为啥 RegExp() 用 \ 抛出错误? [复制]

将图像文件存储在猫鼬模式中的二进制数据中并以 html 形式显示图像

Node.js Buffer(缓冲区)