3.2 Mongoose的初步理解和简化流程
名词解释
Schema
: 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力,用于定义数据库的结构。类似创建表时的数据定义(不仅仅可以定义文档的结构和属性,还可以定义文档的实例方法、静态模型方法、复合索引等),每个Schema
会映射到mongodb中的一个collection。Model
: 由Schema
发布生成的模型,具有抽象属性和行为的数据库操作对象,可以对数据库进行增删查改。Model的每一个实例(instance)就是一个文档documentEntity(document)
: 由Model
创建的实体,他的操作也会影响数据库
注意:Schema
、
Model、
Entity的关系请牢记,
Schema生成
Model,
Model创造
Entity,
Model和
Entity都可对数据库操作造成影响,但
Model比
Entity`更具操作性。
特点
Mongoose是NodeJS的驱动,不能作为其他语言的驱动。Mongoose有两个特点
1、通过关系型数据库的思想来设计非关系型数据库
2、基于mongodb驱动,简化操作
简化流程
安装mongoose
引入mongoose
创建连接
定义一个Schema
Schema
var PersonSchema = new mongoose.Schema({
name:String //定义一个属性name,类型为String
});
将该Schema
发布为Model
Schema
发布为Model
var PersonModel = db.model('Person',PersonSchema);
//如果该Model已经发布,则可以直接通过名字索引到,如下:
//var PersonModel = db.model('Person');
//如果没有发布,上一段代码将会异常
用Model
创建Entity
Model
创建Entity
var personEntity = new PersonModel({name:'Krouky'});
//打印这个实体的名字看看
console.log(personEntity.name); //Krouky
我们甚至可以为此Schema
创建方法
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
的
Entity
是具有具体的数据库操作CRUD
的 personEntity.save(); //执行完成后,数据库就有该数据了
如果要执行查询,需要依赖Model
,当然Entity
也是可以做到的
Model
,当然Entity
也是可以做到的 PersonModel.find(function(err,persons){
//查询到的所有person
});
Last updated
Was this helpful?