7.Nodejs入门-----Mongoose

Mongoose

是一个将JavaScript对象与数据库产生关系的一个框架,object relatedmodel。操作对象,就是操作数据库了;对象产生了,同时也持久化了。

这个思路是Java三大框架SSH中Hibernate框架的思路。彻底改变了人们使用数据库的方式。

http://mongoosejs.com/

mongoose就是:

 

官网上的hello world:

1       //引包,并不需要引用mongodb这个包

2       var mongoose = require('mongoose');

3       //链接数据库,haha是数据库名字

4       mongoose.connect('mongodb://localhost/haha');

5        

6       //创建了一个模型。猫的模型。所有的猫,都有名字,是字符串。“类”。

7       var Cat = mongoose.model('Cat', { name: String });

8       //实例化一只猫

9       var kitty = new Cat({ name: 'Zildjian' });

10    //调用这只猫的save方法,保存这只猫

11    kitty.save(function (err) {

12      console.log('喵喵喵');

13    });

14     

15    var tom = new Cat({"name":"汤姆"});

16    tom.save(function(){

17           console.log('喵喵喵');

18    });

上面的代码中,没有一个语句是明显的操作数据库,感觉都在创建类、实例化类、调用类的方法。都在操作对象,但是数据库同步被持久了。

 

mongoose的哲学,就是让你用操作对象的方式操作数据库。

创建一个模型

1       mongoose.model("Cat",{"name" : String , "age" : Integer});

就可以被实例化

1       var kitty = new Cat({ name: 'Zildjian' });

然后这个实例就可以被save。

 

中文博客:  https://cnodejs.org/topic/51ff720b44e76d216afe34d9

 

mongoose首先要想明白一件事儿,所有的操作都不是对数据库进行的。所有的操作都是对类、实例进行的。但是数据库的持久化自动完成了。

 

数据库连接

公式:

1       var mongoose = require('mongoose');

2       //创建数据库连接

3       var db      = mongoose.createConnection('mongodb://127.0.0.1:27017/haha');

4       //监听open事件

5       db.once('open', function (callback) {

6           console.log("数据库成功连接");

7       });

 

定义模型

创造schema → 定义一些schema的静态方法 → 创造模型

创造schema用什么语句? new mongoose.schema({});

创造模型用什么语句?      db.model(“Student”,schema名字);

 

//创建了一个schema结构。

var studentSchema = new mongoose.Schema({

    name     :  {type : String},

    age      :  {type : Number},

    sex      :  {type : String}

});

//创建静态方法

studentSchema.statics.zhaoren = function(name, callback) {

    this.model('Student').find({name: name}, callback);   //this.model('Student')指的是当前这个类

};

//创建修改的静态方法

studentSchema.statics.xiugai = function(conditions,update,options,callback){

    this.model("Student").update(conditions, update, options, callback);

}

//创建了一个模型,就是学生模型,就是学生类。

//类是基于schema创建的。

var studentModel = db.model('Student', studentSchema);

 

解释一下,什么是静态方法,什么是类方法:

1       //类

2       function Student(){

3             

4       }

5        

6       //实例化一个学生

7       var xiaoming = new Student();

8       //实例方法,因为这个sleep方法的执行者是类的实例

9       xiaoming.sleep();

10     

11     

12    //静态方法(类方法),这个方法的执行者是这个类,不是这个类的实例。

13    Student.findAllBuJiGe();

 

前台界面:不操作数据库,只操作类!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值