使用Mongoose ORM的最主要原因是什么?

fan*_*ncy 19 mongoose mongodb nosql node.js

我一直在使用它与一个新项目,但它也是我第一次使用MongoDB.定义模式似乎是不必要的,因为我认为mongo的优点在于它不需要定义的方案.我不能只是在架构中保存对象吗?那我为什么要这样?还缺少文档,使得我可以轻松地在mongo shell中做一些比他们应该更难的事情.

Pat*_*ick 20

关于MongoDB的Mongoose最好的事情是你可以对要插入/更新的数据进行内置的自动验证.Mongoose还允许您在文档保存之前预先定义要发生的事件.这非常强大,因为它整合了您必须编写的代码,并将代码放在文档逻辑旁边而不是应用程序逻辑中.

查看中间件和验证的一些示例.Github上的alexyoung/Nodepad在models.js文件中有一些很好的例子.


ckk*_*ght 6

事先了解已定义的模式可能很方便,因为这样您就可以做出您可能无法做出的假设.

例如,如果我有一个Post模式,那么我可以假设它有一个body字段并将其用作a String而不检查它的存在.

当然,即使在我定义良好的模型上,我也可以在其中拥有相当于无模式的文档,例如

mongoose.model('Post', new Schema({
    body: String,
    meta: {}
}));
Run Code Online (Sandbox Code Playgroud)

然后我可以随心所欲地将随机数据添加到myPost.meta.它为我定义了架构和无模式之间的平衡.