##一、快速通道
###1.1 名词解释
Schema : 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力
Model : 由Schema发布生成的模型,具有抽象属性和行为的数据库操作对
Entity : 由Model创建的实体,他的操作也会影响数据库
注意:
1.本学习文档采用严格命名方式来区别不同对象,例如:1
2
3var PersonSchema; //Person的文本属性
var PersonModel; //Person的数据库模型
var PersonEntity; //Person实体
2.Schema、Model、Entity的关系请牢记,Schema生成Model,Model创造Entity,Model和Entity都可对数据库操作造成影响,但Model比Entity更具操作性。
##1.2 准备工作
1.首先你必须安装MongoDB和NodeJS
2.在项目只能够创建一个数据库连接,如下:1
2var mongoose = require('mongoose'); //引用mongoose模块
var db = mongoose.createConnection('localhost','test'); //创建一个数据库连接
3.打开本机localhost的test数据库时,我们可以监测是否有异常1
2
3
4db.on('error',console.error.bind(console,'连接错误:'));
db.once('open',function(){
//一次打开记录
});
注意:
成功开启数据库后,就可以执行数据库相应操作,假设以下代码都在回调中处理
4.定义一个Schema1
2
3var PersonSchema = new mongoose.Schema({
name:String //定义一个属性name,类型为String
});
5.将该Schema发布为Model1
2
3
4var PersonModel = db.model('Person',PersonSchema);
//如果该Model已经发布,则可以直接通过名字索引到,如下:
//var PersonModel = db.model('Person');
//如果没有发布,上一段代码将会异常
6.用Model创建Entity1
2
3var personEntity = new PersonModel({name:'Krouky'});
//打印这个实体的名字看看
console.log(personEntity.name); //Krouky
7.我们甚至可以为此Schema创建方法1
2
3
4
5
6
7//为Schema模型追加speak方法
PersonSchema.methods.speak = function(){
console.log('我的名字叫'+this.name);
}
var PersonModel = db.model('Person',PersonSchema);
var personEntity = new PersonModel({name:'Krouky'});
personEntity.speak();//我的名字叫Krouky
8.Entity是具有具体的数据库操作CRUD的1
personEntity.save(); //执行完成后,数据库就有该数据了
9.如果要执行查询,需要依赖Model,当然Entity也是可以做到的1
2
3PersonModel.find(function(err,persons){
//查询到的所有person
});
注意:
1. 具体的如何配置Schema、Model以及Model和Entity的相关操作,我们会在后面进行
2. Model和Entity都有能影响数据库的操作,但仍有区别,后面我们也会做解释
Mongoose 与Mongodb关系
1个new mongoose.Schema == 一个集合
前者可以对这个集合进行新增 删除 更新等操作
创建新的集合需要再New一个就好了
mongoose定义collection的name:1
exports.Page= mongoose.model('Page',PageSchema,"PAGES");//其中PAGES为数据库中的collection的名称
注意:默认如果没有PAGES参数,则name为Page+s命名
参考文档
官方文档
Mongoose学习参考文档——基础篇
mongoose的增删改查操作
node.js下mongoose简单操作实例