3.2 Mongoose的初步理解和简化流程

名词解释

  • Schema : 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力,用于定义数据库的结构。类似创建表时的数据定义(不仅仅可以定义文档的结构和属性,还可以定义文档的实例方法、静态模型方法、复合索引等),每个Schema会映射到mongodb中的一个collection。

  • Model : 由Schema发布生成的模型,具有抽象属性和行为的数据库操作对象,可以对数据库进行增删查改。Model的每一个实例(instance)就是一个文档document

  • Entity(document) : 由Model创建的实体,他的操作也会影响数据库

注意:SchemaModelEntity的关系请牢记,Schema生成ModelModel创造EntityModelEntity都可对数据库操作造成影响,但ModelEntity`更具操作性。

特点

Mongoose是NodeJS的驱动,不能作为其他语言的驱动。Mongoose有两个特点

1、通过关系型数据库的思想来设计非关系型数据库

2、基于mongodb驱动,简化操作

简化流程

安装mongoose

引入mongoose

创建连接

定义一个Schema

    var PersonSchema = new mongoose.Schema({
      name:String   //定义一个属性name,类型为String
    });

将该Schema发布为Model

    var PersonModel = db.model('Person',PersonSchema);
    //如果该Model已经发布,则可以直接通过名字索引到,如下:
    //var PersonModel = db.model('Person');
    //如果没有发布,上一段代码将会异常

Model创建Entity

    var personEntity = new PersonModel({name:'Krouky'});
    //打印这个实体的名字看看
    console.log(personEntity.name); //Krouky

我们甚至可以为此Schema创建方法

    //为Schema模型追加speak方法
    PersonSchema.methos.speak = function(){
      console.log('我的名字叫'+this.name);
    }
    var PersonModel = db.model('Person',PersonSchema);
    var personEntity = new PersonModel({name:'Krouky'});
    personEntity.speak();//我的名字叫Krouky

Entity是具有具体的数据库操作CRUD

    personEntity.save();  //执行完成后,数据库就有该数据了

如果要执行查询,需要依赖Model,当然Entity也是可以做到的

    PersonModel.find(function(err,persons){
      //查询到的所有person
    });

Last updated

Was this helpful?