前端攻城狮我爱编程

MongoDB之Mongoose的使用

2018-03-12  本文已影响27人  LemonnYan

一、Mongoose简介

Mongoose是在Node.js异步环境下对MongoDB进行便捷操作的对象模型工具。
实际开发中会选用类似mongoose的模块来操作MongoDB数据库以提升开发效率。

Mongoose三个重要概念:

  • Schema:一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力
  • Model:由Schema发布生成的模型,具有抽象属性和行为的数据库操作对
  • Entity:由Model创建的实体

(1)Schema简述:

这是一种以文件形式存储的数据库模型骨架,无法直接通往数据库端,也就是说它不具备对数据库的操作能力,仅仅只是数据库模型在程序片段中的一种表现,可以说是数据属性模型(传统意义的表结构),又或者是集合的模型骨架。基本属性类型有字符串、日期型、数值型、布尔型、null、数组、内嵌文档等。
是Mongoose里会用到的一种数据模式,可以理解为表结构的定义;每个schema会映射到mongodb中的一个collection。
定义一个Schema:

var PersonSchema = new monoose.Schema({
   name:{type:String},
   age:{type:Number,default:0}  ,
   time:{type:Date,default:Date.now},
   email:{type:String,default:''}  
})

(2)Model简述:

由Schema构造生成的模型,除了Schema定义的数据库骨架以外,还具有数据库操作的行为,类似于管理数据属性、行为的类。

//创建模型,可以用它来操作数据库中的person集合,指的是整体。创建一个person集合
var PersonModel = db.model("person", PersonSchema);

person:数据库中的集合名称,当我们对其添加数据时如果person已经存在,则会保存到其目录下,如果未存在,则会创建person集合,然后再保存数据。有了model,也就有了操作数据的能力。
创建一个Model模型,需要指定两点:1,集合名称;2,集合的Schema结构对象。满足这两点,就可以操作数据库啦。

(3)Entity简述:

由Model创建的实体,使用save方法保存数据,Model和Entity都能影响数据库的操作,但Model比Entity更具操作性。创建Entity成功后,Schema的属性就变成了Model和Entity的公共属性了。
使用Model创建Entity

//根据模型创建实体,是指的个体对象
var personEntity = new PersonModel({
    name : "zf",
    age  : 6,
    email: "zf@qq.com",
    home:'beijing'
});

Schema、Model、Entity的关系:Schema生成Model,Model创造Entity,Model和Entity都可对数据库操作造成影响,但Model比Entity更具操作性。

关于ObjectId
主键,一种特殊而且非常重要的类型,每个Schema都会默认配置这个属性,属性名为_id,除非自己定义,方可覆盖。

    var mongoose = require('mongoose');
    var ObjectId = mongoose.Schema.Types.ObjectId;
    var StudentSchema = new Schema({}); //默认会有_id:ObjectId
    var TeacherSchema = new Schema({id:ObjectId});//只有id:ObjectId

Mongoose中的数据类型:
• String
• Number
• Date
• Boolean
• Buffer
• ObjectId
• Mixed
• Array

二、Mongoose安装

需要配置好Node.js环境和安装好MongoDB数据库,Node.js的配置可参考Node.js入门及安装,以及MongoDB数据库的入门MongoDB入门详解

打开cmd,定位到项目根目录,执行npm install mongoose --save命令。

安装完成示例:


image.png

三、使用步骤

step1:创建数据库连接
    var mongoose = require('mongoose');    //引用mongoose模块
    var db = mongoose.createConnection('localhost','test'); //创建一个数据库连接
step2:可以监测是否有异常
db.on('error',console.error.bind(console,'连接错误:'));
    db.once('open',function(){
      //一次打开记录
    });

成功开启数据库后,就可以执行数据库相应操作

step3:定义一个Schema
 var PersonSchema = new mongoose.Schema({
      name:String   //定义一个属性name,类型为String
    });
step4:将Schema发布为Model
 var PersonModel = db.model('Person',PersonSchema); 
step5:用Model创建Entity
var personEntity = new PersonModel({name:'Krouky'});
    //打印这个实体的名字看看
    console.log(personEntity.name); //Krouky

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

上一篇下一篇

猜你喜欢

热点阅读